[23-Jul-2025 13:33:57 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:33:57 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753269323
    [session_started_at] => 2025-07-23 13:15:23
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:34:01 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:34:01 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753269323
    [session_started_at] => 2025-07-23 13:15:23
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_2_student_3_1753270433.pdf (.pdf)
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_2_student_3_1753270433.pdf
[23-Jul-2025 13:34:01 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 13:34:01 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 13:34:04 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:34:04 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753269323
    [session_started_at] => 2025-07-23 13:15:23
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:34:08 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:34:08 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753269323
    [session_started_at] => 2025-07-23 13:15:23
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:34:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to undefined method PHPAIGradingService::extractKeywords() in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:180
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 180
[23-Jul-2025 13:40:46 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:40:46 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:40:50 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:40:50 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:40:50 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_3_student_3_1753270842.pdf (.pdf)
[23-Jul-2025 13:40:50 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_3_student_3_1753270842.pdf
[23-Jul-2025 13:40:50 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 13:40:50 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 13:40:50 Europe/Berlin] Live grading text extraction failed: All PDF extraction methods failed - no readable text found
[23-Jul-2025 13:40:53 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:40:53 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:40:57 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:40:57 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:42:18 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:42:18 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:42:22 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:42:22 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_4_student_3_1753270935.pdf (.pdf)
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_4_student_3_1753270935.pdf
[23-Jul-2025 13:42:22 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 13:42:22 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 13:42:25 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:42:25 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:42:28 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:42:28 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753270790
    [session_started_at] => 2025-07-23 13:39:50
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to undefined method PHPAIGradingService::extractKeywords() in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:180
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 180
[23-Jul-2025 13:55:11 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:55:11 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:55:14 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:55:14 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_7_student_3_1753271708.pdf (.pdf)
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_7_student_3_1753271708.pdf
[23-Jul-2025 13:55:14 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 13:55:14 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 13:55:18 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:55:18 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:55:22 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 13:55:22 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 13:55:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to undefined method PHPAIGradingService::extractKeywords() in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:192
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 192
[23-Jul-2025 14:04:22 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:04:22 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:04:25 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:04:25 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_6_student_3_1753272259.pdf (.pdf)
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_6_student_3_1753272259.pdf
[23-Jul-2025 14:04:25 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 14:04:25 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 14:04:29 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:04:29 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:04:32 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:04:32 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:04:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to undefined method PHPAIGradingService::extractKeywords() in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 210
[23-Jul-2025 14:16:33 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:16:33 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:16:36 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:16:36 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:16:36 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_5_student_3_1753272989.pdf (.pdf)
[23-Jul-2025 14:16:36 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_5_student_3_1753272989.pdf
[23-Jul-2025 14:16:37 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 14:16:37 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 14:16:37 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 14:16:37 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 14:16:37 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 14:16:37 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 14:16:40 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:16:40 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:16:44 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:16:44 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753271544
    [session_started_at] => 2025-07-23 13:52:25
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:40 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:40 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:44 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:44 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_8_student_3_1753273537.pdf (.pdf)
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_8_student_3_1753273537.pdf
[23-Jul-2025 14:25:44 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 923 characters
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 923 characters
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 923
[23-Jul-2025 14:25:44 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: XTf:E I8CYV I7 kZs n9CkO zQ...
[23-Jul-2025 14:25:47 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:47 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:51 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:51 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:54 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:54 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:54 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 14:25:58 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 14:25:58 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => brianlome
    [first_name] => Steven
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753273492
    [session_started_at] => 2025-07-23 14:24:52
    [user_first_name] => Steven
    [user_last_name] => Kan
    [email] => al@gmail.com
)

[23-Jul-2025 14:25:58 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 14:25:58 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 14:25:58 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 14:25:58 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 17:16:44 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:16:44 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:16:47 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:16:47 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_1_student_2_1753283800.pdf (.pdf)
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_1_student_2_1753283800.pdf
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Smalot extraction successful: 164 characters
[23-Jul-2025 17:16:47 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 273 characters
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Smalot Parser, Manual extraction - Total: 438 characters
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 438
[23-Jul-2025 17:16:47 Europe/Berlin] [RobustDocumentProcessor] Extracted 2 content pieces: A report is like Excel where we store data, and dashboard is PowerPoint where we present the data. Incorrect: Partially understandable but inaccurate analogy...
[23-Jul-2025 17:16:50 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:16:50 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:16:54 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:16:54 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:16:58 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:16:58 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:16:58 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 17:17:02 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 17:17:02 Europe/Berlin] Session data: Array
(
    [user_id] => 2
    [username] => kan
    [first_name] => Jonnie
    [last_name] => Ngwenya
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753283744
    [session_started_at] => 2025-07-23 17:15:44
    [user_first_name] => Jonnie
    [user_last_name] => Ngwenya
    [email] => futuristisasaxcpath357@gmail.com
)

[23-Jul-2025 17:17:02 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 17:17:02 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 17:17:02 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 17:17:02 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 18:17:25 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:25 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:29 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:29 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_1_student_3_1753287442.pdf (.pdf)
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_1_student_3_1753287442.pdf
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Smalot extraction successful: 164 characters
[23-Jul-2025 18:17:29 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 273 characters
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Smalot Parser, Manual extraction - Total: 438 characters
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 438
[23-Jul-2025 18:17:29 Europe/Berlin] [RobustDocumentProcessor] Extracted 2 content pieces: A report is like Excel where we store data, and dashboard is PowerPoint where we present the data. Incorrect: Partially understandable but inaccurate analogy...
[23-Jul-2025 18:17:32 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:32 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:36 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:36 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:39 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:39 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:39 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 18:17:42 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:17:42 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753287321
    [session_started_at] => 2025-07-23 18:15:21
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
    [payment_amount] => 5000.00
    [payment_course_title] => PowerBi
    [payment_course_id] => 1
    [last_viewed_course] => 1
    [last_purchased_course] => 1
)

[23-Jul-2025 18:17:42 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 18:17:42 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 18:17:42 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 18:17:42 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 18:49:48 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:49:48 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:49:52 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:49:52 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_2_student_3_1753289385.pdf (.pdf)
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_2_student_3_1753289385.pdf
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Smalot extraction successful: 164 characters
[23-Jul-2025 18:49:52 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 273 characters
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Smalot Parser, Manual extraction - Total: 438 characters
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 438
[23-Jul-2025 18:49:52 Europe/Berlin] [RobustDocumentProcessor] Extracted 2 content pieces: A report is like Excel where we store data, and dashboard is PowerPoint where we present the data. Incorrect: Partially understandable but inaccurate analogy...
[23-Jul-2025 18:49:55 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:49:55 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:49:58 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:49:58 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:50:02 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:50:02 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:50:02 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 18:50:05 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 18:50:05 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 18:50:05 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 18:50:05 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 18:50:05 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 18:50:06 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:08:03 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:03 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:07 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:07 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_3_student_3_1753290480.pdf (.pdf)
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_3_student_3_1753290480.pdf
[23-Jul-2025 19:08:07 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 1301 characters
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 1301 characters
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 1301
[23-Jul-2025 19:08:07 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: 24090 stream...
[23-Jul-2025 19:08:10 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:10 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:14 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:14 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:18 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:18 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:18 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 19:08:21 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:08:21 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:08:21 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:08:21 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:08:21 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:08:21 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:26:13 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:13 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:17 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:17 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_5_student_3_1753291570.pdf (.pdf)
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_5_student_3_1753291570.pdf
[23-Jul-2025 19:26:17 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 1301 characters
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 1301 characters
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 1301
[23-Jul-2025 19:26:17 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: 24090 stream...
[23-Jul-2025 19:26:20 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:20 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:23 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:23 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:27 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:27 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:27 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 19:26:31 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:26:31 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:26:31 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:26:31 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:26:31 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:26:31 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:33:18 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:18 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:21 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:21 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_4_student_3_1753291995.pdf (.pdf)
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_4_student_3_1753291995.pdf
[23-Jul-2025 19:33:21 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 1301 characters
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Manual extraction - Total: 1301 characters
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 1301
[23-Jul-2025 19:33:21 Europe/Berlin] [RobustDocumentProcessor] Extracted 1 content pieces: 24090 stream...
[23-Jul-2025 19:33:25 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:25 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:29 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:29 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:32 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:32 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:32 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 19:33:35 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:33:35 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:33:35 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:33:35 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:33:35 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:33:35 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:44:00 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:44:00 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753289152
    [session_started_at] => 2025-07-23 18:45:53
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:43 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:52:43 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:47 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:52:47 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Processing file: assignment_7_student_3_1753293160.pdf (.pdf)
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Starting comprehensive PDF extraction from: ../../uploads/assignments/assignment_7_student_3_1753293160.pdf
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Smalot extraction successful: 164 characters
[23-Jul-2025 19:52:47 Europe/Berlin] Error 2: exec() has been disabled for security reasons in /home/twpurnyc/public_html/includes/robust_document_processor.php on line 87
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Starting manual PDF text extraction...
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Manual extraction successful: 273 characters
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] PDF extraction completed using methods: Smalot Parser, Manual extraction - Total: 438 characters
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Cleaning extracted text, length: 438
[23-Jul-2025 19:52:47 Europe/Berlin] [RobustDocumentProcessor] Extracted 2 content pieces: A report is like Excel where we store data, and dashboard is PowerPoint where we present the data. Incorrect: Partially understandable but inaccurate analogy...
[23-Jul-2025 19:52:50 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:52:50 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:53 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:52:53 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:57 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:52:57 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:52:57 Europe/Berlin] AI Grading error: No valid words found in memorandum
[23-Jul-2025 19:53:01 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:53:01 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:53:01 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:53:01 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:53:01 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:53:01 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:57:36 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:57:36 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 19:58:50 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 19:58:50 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 19:58:50
)

[23-Jul-2025 19:59:11 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 19:59:11 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 20:07:53 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:07:53 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:07:53
)

[23-Jul-2025 20:28:26 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 20:28:26 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 20:29:10 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 20:29:10 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 20:34:26 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 20:34:26 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 20:42:40 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:42:40 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:42:40
)

[23-Jul-2025 20:42:40 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:42:40 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:42:40
)

[23-Jul-2025 20:42:40 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:42:40 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:42:40
)

[23-Jul-2025 20:42:40 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:42:40 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:42:40
)

[23-Jul-2025 20:42:40 Europe/Berlin] isLoggedIn check result: false
[23-Jul-2025 20:42:40 Europe/Berlin] Session data: Array
(
    [session_started_at] => 2025-07-23 20:42:40
)

[23-Jul-2025 20:44:54 Europe/Berlin] isLoggedIn check result: true
[23-Jul-2025 20:44:54 Europe/Berlin] Session data: Array
(
    [user_id] => 3
    [username] => Kendrick
    [first_name] => Jonnie
    [last_name] => Kan
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1753293119
    [session_started_at] => 2025-07-23 19:51:59
    [user_first_name] => Jonnie
    [user_last_name] => Kan
    [email] => kanbrandan@gmail.com
)

[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: gradeAssignment called
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: studentText type: string
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: memorandumData type: string
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: studentText length: 284
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: studentWords count: 26
[23-Jul-2025 20:46:04 Europe/Berlin] DEBUG: memoWords count: 129
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: gradeAssignment called
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: studentText type: string
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: memorandumData type: string
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: studentText length: 284
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: studentWords count: 26
[23-Jul-2025 20:57:07 Europe/Berlin] DEBUG: memoWords count: 129
[23-Jul-2025 20:57:11 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:57:11 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:57:11 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:57:11 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: gradeAssignment called
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: studentText type: string
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: memorandumData type: string
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: studentText length: 284
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: studentWords count: 26
[23-Jul-2025 20:58:16 Europe/Berlin] DEBUG: memoWords count: 129
[23-Jul-2025 20:58:20 Europe/Berlin] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:58:20 Europe/Berlin] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:58:20 Europe/Berlin] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:58:20 Europe/Berlin] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:05:26 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 19:05:26 UTC] DEBUG: studentText type: string
[23-Jul-2025 19:05:26 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 19:05:26 UTC] DEBUG: studentText length: 284
[23-Jul-2025 19:05:26 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 19:05:26 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 19:05:26 UTC] DEBUG: studentWords count: 26
[23-Jul-2025 19:05:26 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 19:05:30 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:05:30 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:05:30 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:05:30 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:06:45 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 19:06:45 UTC] DEBUG: studentText type: string
[23-Jul-2025 19:06:45 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 19:06:45 UTC] DEBUG: studentText length: 284
[23-Jul-2025 19:06:45 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 19:06:45 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 19:06:45 UTC] DEBUG: studentWords count: 26
[23-Jul-2025 19:06:45 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 19:06:48 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:06:48 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:06:48 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:06:48 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 19:18:59 UTC] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:109
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 109
[23-Jul-2025 19:25:12 UTC] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:109
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 109
[23-Jul-2025 19:34:03 UTC] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:109
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 109
[23-Jul-2025 19:41:22 UTC] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:109
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 109
[23-Jul-2025 19:59:28 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 19:59:28 UTC] DEBUG: studentText type: string
[23-Jul-2025 19:59:28 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 19:59:28 UTC] DEBUG: studentText length: 307
[23-Jul-2025 19:59:28 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 19:59:28 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 19:59:28 UTC] DEBUG: studentWords count: 23
[23-Jul-2025 19:59:28 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 19:59:32 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 19:59:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:59:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 19:59:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:00:22 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:00:22 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:00:22 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:00:22 UTC] DEBUG: studentText length: 307
[23-Jul-2025 20:00:22 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:00:22 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:00:22 UTC] DEBUG: studentWords count: 23
[23-Jul-2025 20:00:22 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:00:27 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:00:27 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:00:27 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:00:27 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:10:33 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:10:33 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:10:33 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:10:33 UTC] DEBUG: studentText length: 448
[23-Jul-2025 20:10:33 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:10:33 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:10:33 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 20:10:33 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:10:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:10:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:10:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:10:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:11:25 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:11:25 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:11:25 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:11:25 UTC] DEBUG: studentText length: 448
[23-Jul-2025 20:11:25 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:11:25 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:11:25 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 20:11:25 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:11:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:11:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:11:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:11:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:12:33 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:12:33 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:12:33 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:12:33 UTC] DEBUG: studentText length: 458
[23-Jul-2025 20:12:33 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:12:33 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:12:33 UTC] DEBUG: studentWords count: 33
[23-Jul-2025 20:12:33 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:12:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:12:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:12:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:12:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:18:50 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:18:50 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:18:50 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:18:50 UTC] DEBUG: studentText length: 458
[23-Jul-2025 20:18:50 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:18:50 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:18:50 UTC] DEBUG: studentWords count: 33
[23-Jul-2025 20:18:50 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:18:53 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:18:53 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:18:53 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:18:53 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:19:53 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:19:53 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:19:53 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:19:53 UTC] DEBUG: studentText length: 448
[23-Jul-2025 20:19:53 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:19:53 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:19:53 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 20:19:53 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:19:56 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:19:56 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:19:56 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:19:56 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:20:36 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:20:36 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:20:36 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:20:36 UTC] DEBUG: studentText length: 448
[23-Jul-2025 20:20:36 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:20:36 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:20:36 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 20:20:36 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:20:39 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:20:39 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:20:39 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:20:39 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:23:31 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:23:31 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:23:31 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:23:31 UTC] DEBUG: studentText length: 441
[23-Jul-2025 20:23:31 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:23:31 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:23:31 UTC] DEBUG: studentWords count: 35
[23-Jul-2025 20:23:31 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:23:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:23:35 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:23:35 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:23:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:24:33 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:24:33 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:24:33 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:24:33 UTC] DEBUG: studentText length: 441
[23-Jul-2025 20:24:33 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:24:33 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:24:33 UTC] DEBUG: studentWords count: 35
[23-Jul-2025 20:24:33 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:24:36 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:24:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:24:36 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:24:36 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:35:20 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:35:20 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:35:20 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:35:20 UTC] DEBUG: studentText length: 441
[23-Jul-2025 20:35:20 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:35:20 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:35:20 UTC] DEBUG: studentWords count: 35
[23-Jul-2025 20:35:20 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:35:24 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:35:24 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:35:24 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:35:24 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:39:05 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:39:05 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:39:05 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:39:05 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:39:05 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:39:05 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:39:05 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:39:05 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:39:08 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:39:08 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:39:08 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:39:08 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Full text length: 446
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Assignment ID: 14
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 20:43:39 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:43:39 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:43:39 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:43:39 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:43:39 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:43:39 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:43:39 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:43:39 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: AI Score: 18.6
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Similarity Score: 8.55
[23-Jul-2025 20:43:39 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 20:43:42 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:43:42 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:43:42 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:43:42 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Full text length: 446
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Assignment ID: 14
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 20:46:50 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:46:50 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:46:50 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:46:50 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:46:50 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:46:50 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:46:50 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:46:50 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: AI Score: 18.6
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Similarity Score: 8.55
[23-Jul-2025 20:46:50 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 20:46:54 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:46:54 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:46:54 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:46:54 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Full text length: 446
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Assignment ID: 14
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 20:47:46 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:47:46 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:47:46 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:47:46 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:47:46 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:47:46 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:47:46 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:47:46 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: AI Score: 18.6
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Similarity Score: 8.55
[23-Jul-2025 20:47:46 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 20:47:50 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:47:50 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:47:50 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:47:50 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Full text length: 446
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Assignment ID: 14
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 20:48:33 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:48:33 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:48:33 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:48:33 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:48:33 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:48:33 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:48:33 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:48:33 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: AI Score: 18.6
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Similarity Score: 8.55
[23-Jul-2025 20:48:33 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 20:48:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:48:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:48:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:48:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Full text length: 446
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Assignment ID: 14
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 20:53:36 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 20:53:36 UTC] DEBUG: studentText type: string
[23-Jul-2025 20:53:36 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 20:53:36 UTC] DEBUG: studentText length: 446
[23-Jul-2025 20:53:36 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 20:53:36 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 20:53:36 UTC] DEBUG: studentWords count: 36
[23-Jul-2025 20:53:36 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: AI Score: 18.6
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Similarity Score: 8.55
[23-Jul-2025 20:53:36 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 20:53:40 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 20:53:40 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:53:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 20:53:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Full text length: 458
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Assignment ID: 11
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:13:32 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:13:32 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:13:32 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:13:32 UTC] DEBUG: studentText length: 458
[23-Jul-2025 21:13:32 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:13:32 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:13:32 UTC] DEBUG: studentWords count: 33
[23-Jul-2025 21:13:32 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: AI Score: 19.27
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Similarity Score: 9.46
[23-Jul-2025 21:13:32 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 21:13:36 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:13:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:13:36 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:13:36 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Full text length: 448
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Assignment ID: 10
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:14:33 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:14:33 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:14:33 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:14:33 UTC] DEBUG: studentText length: 448
[23-Jul-2025 21:14:33 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:14:33 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:14:33 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 21:14:33 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: AI Score: 18.65
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Similarity Score: 8.67
[23-Jul-2025 21:14:33 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 21:14:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:14:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:14:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:14:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Full text length: 448
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Assignment ID: 10
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:15:30 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:15:30 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:15:30 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:15:30 UTC] DEBUG: studentText length: 448
[23-Jul-2025 21:15:30 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:15:30 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:15:30 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 21:15:30 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: AI Score: 18.65
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Similarity Score: 8.67
[23-Jul-2025 21:15:30 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 21:15:34 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:15:34 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:15:34 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:15:34 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Full text length: 441
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Assignment ID: 12
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:20:15 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:20:15 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:20:15 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:20:15 UTC] DEBUG: studentText length: 441
[23-Jul-2025 21:20:15 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:20:15 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:20:15 UTC] DEBUG: studentWords count: 35
[23-Jul-2025 21:20:15 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: AI Score: 17.98
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Similarity Score: 7.89
[23-Jul-2025 21:20:15 UTC] GRADING DEBUG: Quality Score: 55.5
[23-Jul-2025 21:20:19 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:20:19 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:20:19 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:20:19 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Full text length: 448
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Assignment ID: 10
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:25:39 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:25:39 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:25:39 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:25:39 UTC] DEBUG: studentText length: 448
[23-Jul-2025 21:25:39 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:25:39 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:25:39 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 21:25:39 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: AI Score: 18.65
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Similarity Score: 8.67
[23-Jul-2025 21:25:39 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 21:25:43 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:25:43 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:25:43 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:25:43 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Full text length: 448
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Assignment ID: 10
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 21:33:26 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 21:33:26 UTC] DEBUG: studentText type: string
[23-Jul-2025 21:33:26 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 21:33:26 UTC] DEBUG: studentText length: 448
[23-Jul-2025 21:33:26 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 21:33:26 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 21:33:26 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 21:33:26 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: AI Score: 18.65
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Similarity Score: 8.67
[23-Jul-2025 21:33:26 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 21:33:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 21:33:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:33:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 21:33:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Full text length: 458
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Assignment ID: 11
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 22:21:21 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 22:21:21 UTC] DEBUG: studentText type: string
[23-Jul-2025 22:21:21 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 22:21:21 UTC] DEBUG: studentText length: 458
[23-Jul-2025 22:21:21 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 22:21:21 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 22:21:21 UTC] DEBUG: studentWords count: 33
[23-Jul-2025 22:21:21 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: AI Score: 19.27
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Similarity Score: 9.46
[23-Jul-2025 22:21:21 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 22:21:25 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 22:21:25 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:21:25 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:21:25 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Full text length: 458
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Memorandum length: 1500
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Assignment ID: 11
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 22:22:04 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 22:22:04 UTC] DEBUG: studentText type: string
[23-Jul-2025 22:22:04 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 22:22:04 UTC] DEBUG: studentText length: 458
[23-Jul-2025 22:22:04 UTC] DEBUG: memorandumData length: 1500
[23-Jul-2025 22:22:04 UTC] DEBUG: memorandumText after extraction: 1500
[23-Jul-2025 22:22:04 UTC] DEBUG: studentWords count: 33
[23-Jul-2025 22:22:04 UTC] DEBUG: memoWords count: 129
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: AI Score: 19.27
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Similarity Score: 9.46
[23-Jul-2025 22:22:04 UTC] GRADING DEBUG: Quality Score: 55.75
[23-Jul-2025 22:22:07 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 22:22:07 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:22:07 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:22:07 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Full text length: 470
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Memorandum length: 1735
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Assignment ID: 16
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 22:32:37 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 22:32:37 UTC] DEBUG: studentText type: string
[23-Jul-2025 22:32:37 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 22:32:37 UTC] DEBUG: studentText length: 470
[23-Jul-2025 22:32:37 UTC] DEBUG: memorandumData length: 1735
[23-Jul-2025 22:32:37 UTC] DEBUG: memorandumText after extraction: 1735
[23-Jul-2025 22:32:37 UTC] DEBUG: studentWords count: 32
[23-Jul-2025 22:32:37 UTC] DEBUG: memoWords count: 138
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: AI Score: 16.27
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Similarity Score: 8.97
[23-Jul-2025 22:32:37 UTC] GRADING DEBUG: Quality Score: 43.13
[23-Jul-2025 22:32:41 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 22:32:41 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:32:41 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:32:41 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Full text length: 470
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Memorandum length: 1735
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Assignment ID: 16
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 22:33:21 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 22:33:21 UTC] DEBUG: studentText type: string
[23-Jul-2025 22:33:21 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 22:33:21 UTC] DEBUG: studentText length: 470
[23-Jul-2025 22:33:21 UTC] DEBUG: memorandumData length: 1735
[23-Jul-2025 22:33:21 UTC] DEBUG: memorandumText after extraction: 1735
[23-Jul-2025 22:33:21 UTC] DEBUG: studentWords count: 32
[23-Jul-2025 22:33:21 UTC] DEBUG: memoWords count: 138
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: AI Score: 16.27
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Similarity Score: 8.97
[23-Jul-2025 22:33:21 UTC] GRADING DEBUG: Quality Score: 43.13
[23-Jul-2025 22:33:24 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 22:33:24 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:33:24 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 22:33:24 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Starting AI grading process
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Full text length: 449
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Memorandum length: 163
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Assignment ID: 20
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: PHPAIGradingService class exists
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: PHPAIGradingService instantiated successfully
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: About to call gradeAssignment method
[23-Jul-2025 23:39:36 UTC] DEBUG: gradeAssignment called
[23-Jul-2025 23:39:36 UTC] DEBUG: studentText type: string
[23-Jul-2025 23:39:36 UTC] DEBUG: memorandumData type: string
[23-Jul-2025 23:39:36 UTC] DEBUG: studentText length: 449
[23-Jul-2025 23:39:36 UTC] DEBUG: memorandumData length: 163
[23-Jul-2025 23:39:36 UTC] DEBUG: memorandumText after extraction: 163
[23-Jul-2025 23:39:36 UTC] DEBUG: studentWords count: 34
[23-Jul-2025 23:39:36 UTC] DEBUG: memoWords count: 16
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: gradeAssignment completed successfully
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: AI Score: 69.67
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Similarity Score: 47.06
[23-Jul-2025 23:39:36 UTC] GRADING DEBUG: Quality Score: 54.25
[23-Jul-2025 23:39:40 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[23-Jul-2025 23:39:40 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[23-Jul-2025 23:39:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[23-Jul-2025 23:39:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:44:06 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:44:06 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:44:06 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:44:06 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:44:06 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:44:06 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:44:06 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:44:06 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:44:06 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:44:10 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:44:10 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:44:10 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:44:10 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:44:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:44:34 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:44:34 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:44:34 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:44:34 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:44:34 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:44:34 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:44:34 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:44:34 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:44:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:44:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:44:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:44:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:45:04 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:45:04 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:45:04 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:45:04 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:45:04 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:45:04 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:45:04 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:45:04 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:45:04 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:45:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:45:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:45:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:45:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:45:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:45:33 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:45:33 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:45:33 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:45:33 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:45:33 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:45:33 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:45:33 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:45:33 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:45:36 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:45:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:45:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:45:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:45:58 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:45:58 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:45:58 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:45:58 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:45:58 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:45:58 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:45:58 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:45:58 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:45:58 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:46:03 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:46:03 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:03 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:03 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:46:25 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:46:25 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:46:25 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:46:25 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:46:25 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:46:25 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:46:25 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:46:25 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:46:25 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:46:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:46:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:46:51 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:46:51 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:46:51 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:46:51 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:46:51 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:46:51 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:46:51 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:46:51 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:46:51 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:46:57 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:46:57 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:57 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:46:58 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:47:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:47:34 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:47:34 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:47:34 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:47:34 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:47:34 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:47:34 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:47:34 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:47:34 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:47:41 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:47:42 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:47:42 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:47:43 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:48:18 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:48:18 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:48:18 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:48:18 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:48:18 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:48:18 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:48:18 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:48:18 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:48:18 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:48:23 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:48:23 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:48:23 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:48:23 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 13:48:53 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 13:48:53 UTC] GRADING DEBUG: Full text length: 485
[24-Jul-2025 13:48:53 UTC] GRADING DEBUG: Memorandum length: 163
[24-Jul-2025 13:48:53 UTC] GRADING DEBUG: Assignment ID: 21
[24-Jul-2025 13:48:53 UTC] GRADING ERROR: PHPAIGradingService class not found
[24-Jul-2025 13:48:53 UTC] GRADING CRITICAL ERROR: AI Grading Service not available
[24-Jul-2025 13:48:53 UTC] GRADING ERROR FILE: /home/twpurnyc/public_html/student/ajax/live_ai_grading.php
[24-Jul-2025 13:48:53 UTC] GRADING ERROR LINE: 401
[24-Jul-2025 13:48:53 UTC] GRADING ERROR TRACE: #0 {main}
[24-Jul-2025 13:49:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 13:49:02 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:49:03 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 13:49:03 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:31:39 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:31:39 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:31:39 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:31:39 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:31:39 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:31:39 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:31:39 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:31:39 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:31:39 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:31:39 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:31:39 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:31:39 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:31:43 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:31:43 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:31:43 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:31:43 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:32:06 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:32:06 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:32:06 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:32:06 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:32:06 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:32:06 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:32:06 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:32:06 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:32:06 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:32:06 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:32:06 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:32:06 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:32:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:32:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:32:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:32:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:32:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:32:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:32:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:32:33 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:32:33 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:32:33 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:32:33 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:32:33 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:32:33 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:32:33 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:32:33 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:32:33 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:32:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:32:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:32:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:32:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:33:05 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:33:05 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:33:05 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:33:05 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:33:05 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:33:05 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:33:05 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:33:05 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:33:05 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:33:05 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:33:05 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:33:05 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:33:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:33:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:33:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:33:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:33:34 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:33:34 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:33:34 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:33:34 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:33:34 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:33:34 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:33:34 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:33:34 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:33:34 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:33:34 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:33:34 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:33:34 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:33:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:33:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:33:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:33:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:34:03 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:34:03 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:34:03 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:34:03 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:34:03 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:34:03 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:34:03 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:34:03 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:34:03 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:34:03 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:34:03 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:34:03 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:34:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:34:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:34:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:34:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:34:30 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:34:30 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:34:30 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:34:30 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:34:30 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:34:30 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:34:30 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:34:30 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:34:30 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:34:30 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:34:30 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:34:30 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:34:34 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:34:34 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:34:34 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:34:34 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:34:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:34:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:34:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:34:57 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:34:57 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:34:57 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:34:57 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:34:57 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:34:57 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:34:57 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:34:57 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:34:57 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:35:00 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:35:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:35:25 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:35:25 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:35:25 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:35:25 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:35:25 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:35:25 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:35:25 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:35:25 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:35:25 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:35:25 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:35:25 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:35:25 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:35:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:35:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:35:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:35:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:35:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:35:55 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:35:55 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:35:55 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:35:55 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:35:55 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:35:55 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:35:55 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:35:55 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:35:55 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:35:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:35:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:59 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:35:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:36:26 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:36:26 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:36:26 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:36:26 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:36:26 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:36:26 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:36:26 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:36:26 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:36:26 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:36:26 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:36:26 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:36:26 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:36:30 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:36:30 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:36:30 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:36:30 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:36:56 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:36:56 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:36:56 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:36:56 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:36:56 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:36:56 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:36:56 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:36:56 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:36:56 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:36:56 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:36:56 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:36:56 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:37:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:37:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:37:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:37:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:37:26 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:37:26 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:37:26 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:37:26 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:37:26 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:37:26 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:37:26 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:37:26 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:37:26 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:37:26 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:37:26 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:37:26 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:37:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:37:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:37:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:37:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:37:58 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:37:58 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:37:58 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:37:58 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:37:58 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:37:58 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:37:58 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:37:58 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:37:58 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:37:58 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:37:58 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:37:58 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:38:02 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:38:02 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:38:02 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:38:02 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:38:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:38:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:38:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:38:27 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:38:27 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:38:27 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:38:27 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:38:27 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:38:27 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:38:27 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:38:27 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:38:27 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:38:32 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:38:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:38:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:38:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:39:01 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:39:01 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:39:01 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:39:01 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:39:01 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:39:01 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:39:01 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:39:01 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:39:01 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:39:01 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:39:01 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:39:01 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:39:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:39:06 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:39:06 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:39:06 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:39:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:39:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:39:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:39:33 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:39:33 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:39:33 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:39:33 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:39:33 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:39:33 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:39:33 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:39:33 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:39:33 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:39:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:39:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:39:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:39:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:40:04 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:40:04 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:40:04 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:40:04 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:40:04 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:40:04 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:40:04 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:40:04 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:40:04 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:40:04 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:40:04 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:40:04 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:40:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:40:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:40:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:40:10 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:40:37 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:40:37 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:40:37 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:40:37 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:40:37 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:40:37 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:40:37 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:40:37 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:40:37 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:40:37 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:40:37 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:40:37 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:40:41 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:40:41 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:40:41 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:40:41 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:41:06 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:41:06 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:41:06 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:41:06 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:41:06 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:41:06 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:41:06 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:41:06 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:41:06 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:41:06 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:41:06 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:41:06 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:41:14 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:41:14 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:41:14 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:41:14 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:41:52 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:41:52 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:41:52 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:41:52 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:41:52 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:41:52 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:41:52 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:41:52 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:41:52 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:41:52 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:41:52 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:41:52 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:41:56 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:41:56 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:41:56 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:41:56 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:42:23 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:42:23 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:42:23 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:42:23 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:42:23 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:42:23 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:42:23 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:42:23 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:42:23 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:42:23 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:42:23 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:42:23 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:42:27 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:42:27 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:42:27 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:42:27 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:42:51 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:42:51 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:42:51 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:42:51 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:42:51 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:42:51 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:42:51 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:42:51 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:42:51 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:42:51 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:42:51 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:42:51 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:42:56 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:42:56 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:42:56 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:42:56 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:43:18 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:43:18 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:43:18 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:43:18 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:43:18 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:43:18 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:43:18 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:43:18 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:43:18 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:43:18 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:43:18 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:43:18 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:43:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:43:22 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:43:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:43:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:43:48 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:43:48 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:43:48 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:43:48 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:43:48 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:43:48 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:43:48 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:43:48 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:43:48 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:43:48 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:43:48 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:43:48 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:43:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:43:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:43:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:43:51 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:44:19 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:44:19 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:44:19 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:44:19 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:44:19 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:44:19 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:44:19 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:44:19 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:44:19 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:44:19 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:44:19 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:44:19 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:44:24 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:44:24 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:44:24 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:44:24 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:44:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:44:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:44:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:44:57 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:44:57 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:44:57 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:44:57 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:44:57 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:44:57 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:44:57 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:44:57 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:44:57 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:45:02 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:45:02 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:45:02 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:45:02 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:45:26 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:45:26 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:45:26 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:45:26 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:45:26 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:45:26 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:45:26 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:45:26 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:45:26 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:45:26 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:45:26 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:45:26 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:45:32 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:45:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:45:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:45:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:46:08 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:46:08 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:46:08 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:46:08 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:46:08 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:46:08 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:46:08 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:46:08 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:46:08 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:46:08 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:46:08 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:46:08 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:46:11 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:46:11 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:46:11 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:46:11 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Full text length: 459
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Assignment ID: 25
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:46:34 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:46:34 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:46:34 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:46:34 UTC] DEBUG: studentText length: 459
[24-Jul-2025 14:46:34 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:46:34 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:46:34 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:46:34 UTC] DEBUG: Similarity: 6.5408805031447
[24-Jul-2025 14:46:34 UTC] DEBUG: Keyword Coverage: 6.9444444444444
[24-Jul-2025 14:46:34 UTC] DEBUG: Quality Score: 50
[24-Jul-2025 14:46:34 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Similarity Score: 6.54
[24-Jul-2025 14:46:34 UTC] GRADING DEBUG: Quality Score: 50
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:58:35 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:58:35 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:58:35 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:58:35 UTC] DEBUG: studentText length: 460
[24-Jul-2025 14:58:35 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:58:35 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:58:35 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:58:35 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 14:58:35 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 14:58:35 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 14:58:35 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 14:58:35 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 14:58:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:58:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:58:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:58:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:59:03 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:59:03 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:59:03 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:59:03 UTC] DEBUG: studentText length: 460
[24-Jul-2025 14:59:03 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:59:03 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:59:03 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:59:03 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 14:59:03 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 14:59:03 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 14:59:03 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 14:59:03 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 14:59:07 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:59:07 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:59:07 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:59:07 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 14:59:31 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 14:59:31 UTC] DEBUG: studentText type: string
[24-Jul-2025 14:59:31 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 14:59:31 UTC] DEBUG: studentText length: 460
[24-Jul-2025 14:59:31 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 14:59:31 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 14:59:31 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 14:59:31 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 14:59:31 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 14:59:31 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 14:59:31 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 14:59:31 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 14:59:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 14:59:35 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:59:35 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 14:59:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:00:01 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:00:01 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:00:01 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:00:01 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:00:01 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:00:01 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:00:01 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:00:01 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:00:01 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:00:01 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:00:01 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:00:01 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:00:05 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:00:05 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:00:05 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:00:05 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:00:29 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:00:29 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:00:29 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:00:29 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:00:29 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:00:29 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:00:29 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:00:29 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:00:29 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:00:29 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:00:29 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:00:29 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:00:33 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:00:33 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:00:33 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:00:33 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:01:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:01:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:01:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:01:00 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:01:00 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:01:00 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:01:00 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:01:00 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:01:00 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:01:00 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:01:00 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:01:00 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:01:04 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:01:04 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:01:04 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:01:04 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:01:31 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:01:31 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:01:31 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:01:31 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:01:31 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:01:31 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:01:31 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:01:31 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:01:31 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:01:31 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:01:31 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:01:31 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:01:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:01:35 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:01:35 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:01:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:02:04 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:02:04 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:02:04 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:02:04 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:02:04 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:02:04 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:02:04 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:02:04 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:02:04 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:02:04 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:02:04 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:02:04 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:02:08 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:02:08 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:02:08 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:02:08 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:02:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:02:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:02:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:02:33 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:02:33 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:02:33 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:02:33 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:02:33 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:02:33 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:02:33 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:02:33 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:02:33 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:02:37 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:02:37 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:02:37 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:02:37 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:03:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:03:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:03:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:03:00 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:03:00 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:03:00 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:03:00 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:03:00 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:03:00 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:03:00 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:03:00 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:03:00 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:03:05 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:03:05 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:03:05 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:03:05 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:03:45 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:03:45 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:03:45 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:03:45 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:03:45 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:03:45 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:03:45 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:03:45 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:03:45 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:03:45 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:03:45 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:03:45 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:03:49 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:03:49 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:03:49 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:03:49 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:19:43 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:19:43 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:19:43 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:19:43 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:19:43 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:19:43 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:19:43 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:19:43 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:19:43 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:19:43 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:19:43 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:19:43 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:19:47 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:19:47 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:19:47 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:19:47 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:29:11 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:29:11 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:29:11 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:29:11 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:29:11 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:29:11 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:29:11 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:29:11 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:29:11 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:29:11 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:29:11 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:29:11 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:29:15 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:29:15 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:29:15 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:29:16 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:38:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:30 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:34 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:37 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:40 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:44 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:38:44 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:38:44 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:38:44 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:38:44 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:38:44 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:38:44 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:38:44 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:38:44 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:38:44 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:38:44 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:38:44 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:38:44 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:38:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:38:47 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:38:47 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:38:47 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:38:47 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:38:47 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:46:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:46:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:46:41 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:46:41 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:46:41 UTC] 📊 Step: start
[24-Jul-2025 15:46:41 UTC] 📊 All POST data: {"assignment_id":"24","step":"start"}
[24-Jul-2025 15:46:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:46:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:46:42 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:46:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:46:45 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:46:45 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:46:45 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:46:45 UTC] 📊 Step: extract_text
[24-Jul-2025 15:46:45 UTC] 📊 All POST data: {"assignment_id":"24","step":"extract_text"}
[24-Jul-2025 15:46:45 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:46:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:46:45 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:46:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:46:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:46:49 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:46:49 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:46:49 UTC] 📊 Step: check_memorandum
[24-Jul-2025 15:46:49 UTC] 📊 All POST data: {"assignment_id":"24","step":"check_memorandum"}
[24-Jul-2025 15:46:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:46:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:46:49 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:46:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:46:53 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:46:53 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:46:53 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:46:53 UTC] 📊 Step: ai_analysis
[24-Jul-2025 15:46:53 UTC] 📊 All POST data: {"assignment_id":"24","step":"ai_analysis"}
[24-Jul-2025 15:46:53 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:46:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:46:53 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:46:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:46:57 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:46:57 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:46:57 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:46:57 UTC] 📊 Step: generate_grade
[24-Jul-2025 15:46:57 UTC] 📊 All POST data: {"assignment_id":"24","step":"generate_grade"}
[24-Jul-2025 15:46:57 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:46:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:46:57 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Full text length: 460
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Assignment ID: 24
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:46:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:46:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:46:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:46:57 UTC] DEBUG: studentText length: 460
[24-Jul-2025 15:46:57 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 15:46:57 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 15:46:57 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 15:46:57 UTC] DEBUG: Similarity: 6.9565217391304
[24-Jul-2025 15:46:57 UTC] DEBUG: Keyword Coverage: 8.3333333333333
[24-Jul-2025 15:46:57 UTC] DEBUG: Quality Score: 53
[24-Jul-2025 15:46:57 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Similarity Score: 6.96
[24-Jul-2025 15:46:57 UTC] GRADING DEBUG: Quality Score: 53
[24-Jul-2025 15:47:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:47:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:47:00 UTC] 📊 POST assignment_id: 24
[24-Jul-2025 15:47:00 UTC] 📊 Parsed assignment_id: 24
[24-Jul-2025 15:47:00 UTC] 📊 Step: complete
[24-Jul-2025 15:47:00 UTC] 📊 All POST data: {"assignment_id":"24","step":"complete"}
[24-Jul-2025 15:47:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:47:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=24, student_id=1
[24-Jul-2025 15:47:00 UTC] ✅ FOUND SUBMISSION: ID=83, file_url=, text_len=460
[24-Jul-2025 15:47:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:47:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:47:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:47:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 15:50:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:35 UTC] 📊 Step: start
[24-Jul-2025 15:50:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 15:50:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:35 UTC] ❌ NO SUBMISSION FOUND for assignment_id=26, student_id=1
[24-Jul-2025 15:50:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:38 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:38 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:38 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:38 UTC] 📊 Step: extract_text
[24-Jul-2025 15:50:38 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 15:50:38 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:39 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 15:50:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:42 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:42 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:42 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:42 UTC] 📊 Step: check_memorandum
[24-Jul-2025 15:50:42 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 15:50:42 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:42 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 15:50:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:46 UTC] 📊 Step: ai_analysis
[24-Jul-2025 15:50:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 15:50:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 15:50:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:49 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:49 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:49 UTC] 📊 Step: generate_grade
[24-Jul-2025 15:50:49 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 15:50:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:49 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 15:50:49 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 15:50:49 UTC] DEBUG: studentText type: string
[24-Jul-2025 15:50:49 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 15:50:49 UTC] DEBUG: studentText length: 458
[24-Jul-2025 15:50:49 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 15:50:49 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 15:50:49 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 15:50:49 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 15:50:49 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 15:50:49 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 15:50:49 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 15:50:49 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 15:50:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 15:50:53 UTC] 📊 Session user_id: 1
[24-Jul-2025 15:50:53 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 15:50:53 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 15:50:53 UTC] 📊 Step: complete
[24-Jul-2025 15:50:53 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 15:50:53 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 15:50:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 15:50:53 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 15:50:53 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 15:50:53 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:50:53 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 15:50:53 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:04:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:28 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:28 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:28 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:28 UTC] 📊 Step: start
[24-Jul-2025 16:04:28 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:04:28 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:28 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:31 UTC] 📊 Step: extract_text
[24-Jul-2025 16:04:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:04:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:35 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:04:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:04:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:38 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:38 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:38 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:38 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:04:38 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:04:38 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:38 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:42 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:42 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:42 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:42 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:04:42 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:04:42 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:42 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:04:42 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:04:42 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:04:42 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:04:42 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:04:42 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:04:42 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:04:42 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:04:42 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:04:42 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:04:42 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:04:42 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:04:42 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:04:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:04:45 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:04:45 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:04:45 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:04:45 UTC] 📊 Step: complete
[24-Jul-2025 16:04:45 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:04:45 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:04:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:04:45 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:04:46 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:04:46 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:04:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:04:46 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:06:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:06:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:06:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:06:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:06:46 UTC] 📊 Step: start
[24-Jul-2025 16:06:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:06:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:06:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:06:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:06:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:06:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:06:49 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:06:49 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:06:49 UTC] 📊 Step: extract_text
[24-Jul-2025 16:06:49 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:06:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:06:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:06:49 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:06:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:06:53 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:06:53 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:06:53 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:06:53 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:06:53 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:06:53 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:06:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:06:53 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:06:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:06:56 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:06:56 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:06:56 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:06:56 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:06:56 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:06:56 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:06:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:06:56 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:07:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:07:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:07:00 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:07:00 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:07:00 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:07:00 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:07:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:07:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:07:00 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:07:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:07:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:07:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:07:00 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:07:00 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:07:00 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:07:00 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:07:00 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:07:00 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:07:00 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:07:00 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:07:00 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:07:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:07:03 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:07:03 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:07:03 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:07:03 UTC] 📊 Step: complete
[24-Jul-2025 16:07:03 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:07:03 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:07:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:07:03 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:07:03 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:07:03 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:07:03 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:07:04 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:08:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:08:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:08:44 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:08:44 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:08:44 UTC] 📊 Step: start
[24-Jul-2025 16:08:44 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:08:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:08:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:08:44 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:08:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:08:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:08:47 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:08:47 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:08:47 UTC] 📊 Step: extract_text
[24-Jul-2025 16:08:47 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:08:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:08:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:08:47 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:08:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:08:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:08:51 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:08:51 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:08:51 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:08:51 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:08:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:08:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:08:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:08:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:08:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:08:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:08:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:08:54 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:08:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:08:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:08:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:08:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:08:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:08:57 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:08:57 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:08:57 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:08:57 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:08:57 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:08:57 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:08:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:08:57 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:08:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:08:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:08:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:08:57 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:08:57 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:08:57 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:08:57 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:08:57 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:08:57 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:08:57 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:08:57 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:08:57 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:09:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:09:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:09:01 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:09:01 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:09:01 UTC] 📊 Step: complete
[24-Jul-2025 16:09:01 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:09:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:09:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:09:01 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:09:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:09:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:09:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:09:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:13:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:22 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:22 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:22 UTC] 📊 Step: start
[24-Jul-2025 16:13:22 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:13:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:22 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:25 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:25 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:25 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:25 UTC] 📊 Step: extract_text
[24-Jul-2025 16:13:25 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:13:25 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:25 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:28 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:28 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:28 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:28 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:13:28 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:13:28 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:28 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:32 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:32 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:32 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:13:32 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:13:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:32 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:35 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:13:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:13:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:13:35 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:13:35 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:13:35 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:13:35 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:13:35 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:13:35 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:13:35 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:13:35 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:13:35 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:13:35 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:13:35 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:13:35 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:13:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:38 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:38 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:38 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:38 UTC] 📊 Step: complete
[24-Jul-2025 16:13:38 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:13:38 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:38 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:13:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:13:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:13:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:13:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:50 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:50 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:50 UTC] 📊 Step: start
[24-Jul-2025 16:13:50 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:13:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:54 UTC] 📊 Step: extract_text
[24-Jul-2025 16:13:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:13:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:13:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:13:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:13:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:13:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:13:58 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:13:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:13:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:13:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:13:58 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:03 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:03 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:03 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:03 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:14:03 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:14:03 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:03 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:06 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:06 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:06 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:06 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:14:06 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:14:06 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:06 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:14:06 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:14:06 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:14:06 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:14:06 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:14:06 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:14:06 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:14:06 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:14:06 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:14:06 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:14:06 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:14:06 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:14:06 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:14:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:10 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:10 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:10 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:10 UTC] 📊 Step: complete
[24-Jul-2025 16:14:10 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:14:10 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:10 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:10 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:14:10 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:14:11 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:14:11 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:14:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:19 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:19 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:19 UTC] 📊 Step: start
[24-Jul-2025 16:14:19 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:14:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:19 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:23 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:23 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:23 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:23 UTC] 📊 Step: extract_text
[24-Jul-2025 16:14:23 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:14:23 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:23 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:27 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:27 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:27 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:27 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:14:27 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:14:27 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:27 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:31 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:14:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:14:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:35 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:14:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:14:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:14:35 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:14:35 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:14:35 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:14:35 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:14:35 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:14:35 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:14:35 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:14:35 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:14:35 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:14:35 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:14:35 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:14:35 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:14:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:40 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:40 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:40 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:40 UTC] 📊 Step: complete
[24-Jul-2025 16:14:40 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:14:40 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:40 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:40 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:14:40 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:14:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:14:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:14:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:52 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:52 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:52 UTC] 📊 Step: start
[24-Jul-2025 16:14:52 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:14:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:52 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:56 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:56 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:56 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:56 UTC] 📊 Step: extract_text
[24-Jul-2025 16:14:56 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:14:56 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:56 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:14:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:14:59 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:14:59 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:14:59 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:14:59 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:14:59 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:14:59 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:14:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:14:59 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:03 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:03 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:03 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:03 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:15:03 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:15:03 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:04 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:09 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:09 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:09 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:09 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:15:09 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:15:09 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:11 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:15:11 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:15:11 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:15:11 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:15:11 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:15:11 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:15:11 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:15:11 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:15:11 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:15:11 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:15:11 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:15:11 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:15:11 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:15:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:17 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:17 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:17 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:17 UTC] 📊 Step: complete
[24-Jul-2025 16:15:17 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:15:17 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:17 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:19 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:15:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:15:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:15:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:15:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:32 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:32 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:32 UTC] 📊 Step: start
[24-Jul-2025 16:15:32 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:15:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:32 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:38 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:38 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:38 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:38 UTC] 📊 Step: extract_text
[24-Jul-2025 16:15:38 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:15:38 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:40 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:45 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:45 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:45 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:45 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:15:45 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:15:45 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:45 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:49 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:49 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:49 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:15:49 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:15:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:49 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:53 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:53 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:53 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:53 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:15:53 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:15:53 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:53 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:15:53 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:15:53 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:15:53 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:15:53 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:15:53 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:15:53 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:15:53 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:15:53 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:15:53 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:15:53 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:15:53 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:15:53 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:15:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:15:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:15:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:15:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:15:58 UTC] 📊 Step: complete
[24-Jul-2025 16:15:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:15:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:15:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:15:59 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:15:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:15:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:15:59 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:15:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:16:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:11 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:11 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:11 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:11 UTC] 📊 Step: start
[24-Jul-2025 16:16:11 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:16:11 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:11 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:16 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:16 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:16 UTC] 📊 Step: extract_text
[24-Jul-2025 16:16:16 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:16:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:16 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:21 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:21 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:21 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:16:21 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:16:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:21 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:26 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:26 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:26 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:26 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:16:26 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:16:26 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:26 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:31 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:16:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:16:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:16:31 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:16:31 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:16:31 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:16:31 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:16:31 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:16:31 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:16:31 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:16:31 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:16:31 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:16:31 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:16:31 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:16:31 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:16:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:34 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:34 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:34 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:34 UTC] 📊 Step: complete
[24-Jul-2025 16:16:34 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:16:34 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:16:35 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:16:35 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:16:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:16:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:48 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:48 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:48 UTC] 📊 Step: start
[24-Jul-2025 16:16:48 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:16:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:48 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:52 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:52 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:52 UTC] 📊 Step: extract_text
[24-Jul-2025 16:16:52 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:16:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:52 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:16:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:16:56 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:16:56 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:16:56 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:16:56 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:16:56 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:16:56 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:16:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:16:56 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:01 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:01 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:01 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:17:01 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:17:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:01 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:04 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:04 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:04 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:04 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:17:04 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:17:04 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:05 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:17:05 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:17:05 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:17:05 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:17:05 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:17:05 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:17:05 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:17:05 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:17:05 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:17:05 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:17:05 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:17:05 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:17:05 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:17:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:08 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:08 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:08 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:08 UTC] 📊 Step: complete
[24-Jul-2025 16:17:08 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:17:08 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:08 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:17:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:17:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:17:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:17:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:17 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:17 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:17 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:17 UTC] 📊 Step: start
[24-Jul-2025 16:17:17 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:17:17 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:17 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:22 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:22 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:22 UTC] 📊 Step: extract_text
[24-Jul-2025 16:17:22 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:17:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:22 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:25 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:25 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:25 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:25 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:17:25 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:17:25 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:26 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:29 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:29 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:29 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:29 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:17:29 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:17:29 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:29 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:33 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:33 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:33 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:33 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:17:33 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:17:33 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:33 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:17:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:17:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:17:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:17:33 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:17:33 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:17:33 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:17:33 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:17:33 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:17:33 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:17:33 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:17:33 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:17:33 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:17:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:37 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:37 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:37 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:37 UTC] 📊 Step: complete
[24-Jul-2025 16:17:37 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:17:37 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:38 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:17:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:17:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:17:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:17:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:46 UTC] 📊 Step: start
[24-Jul-2025 16:17:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:17:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:47 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:50 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:50 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:50 UTC] 📊 Step: extract_text
[24-Jul-2025 16:17:50 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:17:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:54 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:17:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:17:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:17:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:17:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:17:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:17:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:17:58 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:17:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:17:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:17:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:17:58 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:02 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:02 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:02 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:02 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:18:02 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:18:02 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:02 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:18:02 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:18:02 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:18:02 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:18:02 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:18:02 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:18:02 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:18:02 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:18:02 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:18:02 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:18:02 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:18:02 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:18:02 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:18:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:06 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:06 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:06 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:06 UTC] 📊 Step: complete
[24-Jul-2025 16:18:06 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:18:06 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:06 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:18:06 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:18:06 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:18:06 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:18:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:15 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:15 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:15 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:15 UTC] 📊 Step: start
[24-Jul-2025 16:18:15 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:18:15 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:16 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:19 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:19 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:19 UTC] 📊 Step: extract_text
[24-Jul-2025 16:18:19 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:18:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:19 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:24 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:24 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:24 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:24 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:18:24 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:18:24 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:24 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:27 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:27 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:27 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:27 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:18:27 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:18:27 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:27 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:31 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:18:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:18:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:18:31 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:18:31 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:18:31 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:18:31 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:18:31 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:18:31 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:18:31 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:18:31 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:18:31 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:18:31 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:18:31 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:18:31 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:18:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:35 UTC] 📊 Step: complete
[24-Jul-2025 16:18:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:18:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:36 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:36 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:18:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:18:36 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:18:36 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:18:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:47 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:47 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:47 UTC] 📊 Step: start
[24-Jul-2025 16:18:47 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:18:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:47 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:51 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:51 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:51 UTC] 📊 Step: extract_text
[24-Jul-2025 16:18:51 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:18:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:55 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:55 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:55 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:18:55 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:18:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:55 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:18:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:18:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:18:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:18:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:18:58 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:18:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:18:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:18:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:18:58 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:02 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:02 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:02 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:02 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:19:02 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:19:02 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:02 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:19:02 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:19:02 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:19:02 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:19:02 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:19:02 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:19:02 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:19:02 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:19:02 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:19:02 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:19:02 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:19:02 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:19:02 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:19:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:07 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:07 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:07 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:07 UTC] 📊 Step: complete
[24-Jul-2025 16:19:07 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:19:07 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:07 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:07 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:19:07 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:19:07 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:19:07 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:19:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:15 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:15 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:15 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:15 UTC] 📊 Step: start
[24-Jul-2025 16:19:15 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:19:15 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:15 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:20 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:20 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:20 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:20 UTC] 📊 Step: extract_text
[24-Jul-2025 16:19:20 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:19:20 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:20 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:23 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:23 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:23 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:23 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:19:23 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:19:23 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:24 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:28 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:28 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:28 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:28 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:19:28 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:19:28 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:28 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:31 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:19:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:19:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:19:31 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:19:31 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:19:31 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:19:31 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:19:31 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:19:31 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:19:31 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:19:31 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:19:31 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:19:31 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:19:31 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:19:31 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:19:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:35 UTC] 📊 Step: complete
[24-Jul-2025 16:19:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:19:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:19:35 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:19:35 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:19:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:19:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:44 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:44 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:44 UTC] 📊 Step: start
[24-Jul-2025 16:19:44 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:19:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:44 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:48 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:48 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:48 UTC] 📊 Step: extract_text
[24-Jul-2025 16:19:48 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:19:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:48 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:53 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:53 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:53 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:53 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:19:53 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:19:53 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:53 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:19:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:19:56 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:19:56 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:19:56 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:19:56 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:19:56 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:19:56 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:19:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:19:56 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:00 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:00 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:00 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:20:00 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:20:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:00 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:20:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:20:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:20:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:20:00 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:20:00 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:20:00 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:20:00 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:20:00 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:20:00 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:20:00 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:20:00 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:20:00 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:20:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:04 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:04 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:04 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:04 UTC] 📊 Step: complete
[24-Jul-2025 16:20:04 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:20:04 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:04 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:05 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:20:05 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:20:05 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:20:05 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:20:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:14 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:14 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:14 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:14 UTC] 📊 Step: start
[24-Jul-2025 16:20:14 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:20:14 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:14 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:18 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:18 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:18 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:18 UTC] 📊 Step: extract_text
[24-Jul-2025 16:20:18 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:20:18 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:18 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:22 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:22 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:22 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:20:22 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:20:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:22 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:26 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:26 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:26 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:26 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:20:26 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:20:26 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:26 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:30 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:30 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:30 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:30 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:20:30 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:20:30 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:30 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:20:30 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:20:30 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:20:30 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:20:30 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:20:30 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:20:30 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:20:30 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:20:30 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:20:30 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:20:30 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:20:30 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:20:30 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:20:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:34 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:34 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:34 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:34 UTC] 📊 Step: complete
[24-Jul-2025 16:20:34 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:20:34 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:34 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:34 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:20:34 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:20:34 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:20:34 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:20:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:43 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:43 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:43 UTC] 📊 Step: start
[24-Jul-2025 16:20:43 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:20:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:43 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:46 UTC] 📊 Step: extract_text
[24-Jul-2025 16:20:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:20:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:51 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:51 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:51 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:20:51 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:20:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:54 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:20:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:20:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:20:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:20:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:20:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:20:58 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:20:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:20:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:20:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:20:59 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:20:59 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:20:59 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:20:59 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:20:59 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:20:59 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:20:59 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:20:59 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:20:59 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:20:59 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:20:59 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:20:59 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:20:59 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:21:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:05 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:05 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:05 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:05 UTC] 📊 Step: complete
[24-Jul-2025 16:21:05 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:21:05 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:05 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:05 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:21:05 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:21:05 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:21:05 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:21:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:15 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:15 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:15 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:15 UTC] 📊 Step: start
[24-Jul-2025 16:21:15 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:21:15 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:16 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:19 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:19 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:19 UTC] 📊 Step: extract_text
[24-Jul-2025 16:21:19 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:21:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:19 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:23 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:23 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:23 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:23 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:21:23 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:21:23 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:23 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:27 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:27 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:27 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:27 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:21:27 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:21:27 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:27 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:32 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:32 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:32 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:21:32 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:21:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:32 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:21:32 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:21:32 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:21:32 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:21:32 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:21:32 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:21:32 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:21:32 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:21:32 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:21:32 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:21:32 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:21:32 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:21:32 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:21:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:36 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:36 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:36 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:36 UTC] 📊 Step: complete
[24-Jul-2025 16:21:36 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:21:36 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:36 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:36 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:21:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:21:36 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:21:36 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:21:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:44 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:44 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:44 UTC] 📊 Step: start
[24-Jul-2025 16:21:44 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:21:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:44 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:50 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:50 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:50 UTC] 📊 Step: extract_text
[24-Jul-2025 16:21:50 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:21:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:50 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:54 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:21:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:21:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:21:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:21:58 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:21:58 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:21:58 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:21:58 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:21:58 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:21:58 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:21:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:21:58 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:02 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:02 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:02 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:02 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:22:02 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:22:02 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:02 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:22:02 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:22:02 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:22:02 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:22:02 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:22:02 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:22:02 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:22:02 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:22:02 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:22:02 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:22:02 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:22:02 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:22:02 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:22:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:07 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:07 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:07 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:07 UTC] 📊 Step: complete
[24-Jul-2025 16:22:07 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:22:07 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:07 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:08 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:22:08 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:22:08 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:22:08 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:22:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:17 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:17 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:17 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:17 UTC] 📊 Step: start
[24-Jul-2025 16:22:17 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:22:17 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:17 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:22 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:22 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:22 UTC] 📊 Step: extract_text
[24-Jul-2025 16:22:22 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:22:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:22 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:26 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:26 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:26 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:26 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:22:26 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:22:26 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:26 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:30 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:30 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:30 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:30 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:22:30 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:22:30 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:30 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:33 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:33 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:33 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:33 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:22:33 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:22:33 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:33 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:22:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:22:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:22:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:22:33 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:22:33 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:22:33 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:22:33 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:22:33 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:22:33 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:22:33 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:22:33 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:22:33 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:22:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:22:40 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:22:40 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:22:40 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:22:40 UTC] 📊 Step: complete
[24-Jul-2025 16:22:40 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:22:40 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:22:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:22:40 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:22:40 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:22:40 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:22:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:22:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:23:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:00 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:00 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:00 UTC] 📊 Step: start
[24-Jul-2025 16:23:00 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:23:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:00 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:05 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:05 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:05 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:05 UTC] 📊 Step: extract_text
[24-Jul-2025 16:23:05 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:23:05 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:05 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:08 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:08 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:08 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:08 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:23:08 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:23:08 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:08 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:13 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:13 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:13 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:13 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:23:13 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:23:13 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:13 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:16 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:16 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:16 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:23:16 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:23:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:16 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:23:16 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:23:16 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:23:16 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:23:16 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:23:16 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:23:16 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:23:16 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:23:16 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:23:16 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:23:16 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:23:16 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:23:16 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:23:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:21 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:21 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:21 UTC] 📊 Step: complete
[24-Jul-2025 16:23:21 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:23:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:21 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:23:22 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:23:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:23:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:23:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:30 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:30 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:30 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:30 UTC] 📊 Step: start
[24-Jul-2025 16:23:30 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:23:30 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:30 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:35 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:35 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:35 UTC] 📊 Step: extract_text
[24-Jul-2025 16:23:35 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:23:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:35 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:39 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:39 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:39 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:39 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:23:39 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:23:39 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:39 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:43 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:43 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:43 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:23:43 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:23:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:43 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:23:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:23:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:23:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:23:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:23:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:23:46 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:23:46 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:23:46 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:23:46 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:23:46 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:23:46 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:23:46 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:23:46 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:23:46 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:23:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:23:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:23:50 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:23:50 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:23:50 UTC] 📊 Step: complete
[24-Jul-2025 16:23:50 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:23:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:23:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:23:51 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:23:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:23:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:23:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:23:51 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:24:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:00 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:00 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:00 UTC] 📊 Step: start
[24-Jul-2025 16:24:00 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:24:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:00 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:03 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:03 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:03 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:03 UTC] 📊 Step: extract_text
[24-Jul-2025 16:24:03 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:24:03 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:03 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:08 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:08 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:08 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:08 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:24:08 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:24:08 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:08 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:12 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:12 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:12 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:12 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:24:12 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:24:12 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:12 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:16 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:16 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:16 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:24:16 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:24:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:16 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:24:16 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:24:16 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:24:16 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:24:16 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:24:16 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:24:16 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:24:16 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:24:16 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:24:16 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:24:16 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:24:16 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:24:16 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:24:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:19 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:19 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:19 UTC] 📊 Step: complete
[24-Jul-2025 16:24:19 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:24:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:19 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:19 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:24:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:24:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:24:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:24:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:29 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:29 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:29 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:29 UTC] 📊 Step: start
[24-Jul-2025 16:24:29 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:24:29 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:29 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:32 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:32 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:32 UTC] 📊 Step: extract_text
[24-Jul-2025 16:24:32 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:24:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:32 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:37 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:37 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:37 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:37 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:24:37 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:24:37 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:37 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:42 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:42 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:42 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:24:42 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:24:42 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:42 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:24:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:24:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:24:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:24:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:24:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:24:46 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:24:46 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:24:46 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:24:46 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:24:46 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:24:46 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:24:46 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:24:46 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:24:46 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:24:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:24:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:24:50 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:24:50 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:24:50 UTC] 📊 Step: complete
[24-Jul-2025 16:24:50 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:24:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:24:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:24:50 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:24:50 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:24:50 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:24:50 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:24:50 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:25:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:04 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:04 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:04 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:04 UTC] 📊 Step: start
[24-Jul-2025 16:25:04 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:25:04 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:04 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:08 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:08 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:08 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:08 UTC] 📊 Step: extract_text
[24-Jul-2025 16:25:08 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:25:08 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:08 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:12 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:12 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:12 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:12 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:25:12 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:25:12 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:12 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:16 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:16 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:16 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:25:16 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:25:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:17 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:21 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:21 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:21 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:25:21 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:25:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:21 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:25:21 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:25:21 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:25:21 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:25:21 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:25:21 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:25:21 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:25:21 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:25:21 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:25:21 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:25:21 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:25:21 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:25:21 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:25:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:26 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:26 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:26 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:26 UTC] 📊 Step: complete
[24-Jul-2025 16:25:26 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:25:26 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:27 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:27 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:25:28 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:25:28 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:25:28 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:25:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:37 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:37 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:37 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:37 UTC] 📊 Step: start
[24-Jul-2025 16:25:37 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:25:37 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:37 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:41 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:41 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:41 UTC] 📊 Step: extract_text
[24-Jul-2025 16:25:41 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:25:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:41 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:45 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:45 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:45 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:45 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:25:45 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:25:45 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:45 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:48 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:48 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:48 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:25:48 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:25:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:48 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:52 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:52 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:52 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:25:52 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:25:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:53 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:25:53 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:25:53 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:25:53 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:25:53 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:25:53 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:25:53 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:25:53 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:25:53 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:25:53 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:25:53 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:25:53 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:25:53 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:25:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:25:57 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:25:57 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:25:57 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:25:57 UTC] 📊 Step: complete
[24-Jul-2025 16:25:57 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:25:57 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:25:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:25:57 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:25:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:25:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:26:00 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:26:00 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:26:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:10 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:10 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:10 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:10 UTC] 📊 Step: start
[24-Jul-2025 16:26:10 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:26:10 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:10 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:14 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:14 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:14 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:14 UTC] 📊 Step: extract_text
[24-Jul-2025 16:26:14 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:26:14 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:14 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:18 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:18 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:18 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:18 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:26:18 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:26:18 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:18 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:22 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:22 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:22 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:26:22 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:26:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:22 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:25 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:25 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:25 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:25 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:26:25 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:26:25 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:25 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:26:25 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:26:25 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:26:25 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:26:25 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:26:25 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:26:25 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:26:25 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:26:25 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:26:26 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:26:26 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:26:26 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:26:26 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:26:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:26:26 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:26:26 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:26:26 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:26:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:31 UTC] 📊 Step: complete
[24-Jul-2025 16:26:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:26:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:31 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:26:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:26:33 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:26:34 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:26:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:46 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:46 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:46 UTC] 📊 Step: start
[24-Jul-2025 16:26:46 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:26:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:46 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:49 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:49 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:49 UTC] 📊 Step: extract_text
[24-Jul-2025 16:26:49 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:26:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:49 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:54 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:54 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:54 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:26:54 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:26:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:54 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:26:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:26:59 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:26:59 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:26:59 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:26:59 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:26:59 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:26:59 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:26:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:26:59 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:02 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:02 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:02 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:02 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:27:02 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:27:02 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:03 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:27:03 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:27:03 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:27:03 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:27:03 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:27:03 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:27:03 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:27:03 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:27:03 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:27:03 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:27:03 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:27:03 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:27:03 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:27:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:07 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:07 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:07 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:07 UTC] 📊 Step: complete
[24-Jul-2025 16:27:07 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:27:07 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:07 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:07 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:27:07 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:27:07 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:27:07 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:27:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:13 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:13 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:13 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:13 UTC] 📊 Step: start
[24-Jul-2025 16:27:13 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:27:13 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:14 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:17 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:17 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:17 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:17 UTC] 📊 Step: extract_text
[24-Jul-2025 16:27:17 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:27:17 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:17 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:20 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:20 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:20 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:20 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:27:20 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:27:20 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:20 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:24 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:24 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:24 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:24 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:27:24 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:27:24 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:24 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:28 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:28 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:28 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:28 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:27:28 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:27:28 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:28 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Full text length: 458
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:27:28 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:27:28 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:27:28 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:27:28 UTC] DEBUG: studentText length: 458
[24-Jul-2025 16:27:28 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:27:28 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:27:28 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:27:28 UTC] DEBUG: Similarity: 7.4172185430464
[24-Jul-2025 16:27:28 UTC] DEBUG: Keyword Coverage: 7.2815533980583
[24-Jul-2025 16:27:28 UTC] DEBUG: Quality Score: 43
[24-Jul-2025 16:27:28 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Similarity Score: 7.42
[24-Jul-2025 16:27:28 UTC] GRADING DEBUG: Quality Score: 43
[24-Jul-2025 16:27:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:27:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:27:31 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:27:31 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:27:31 UTC] 📊 Step: complete
[24-Jul-2025 16:27:31 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:27:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:27:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:27:31 UTC] ✅ FOUND SUBMISSION: ID=105, file_url=, text_len=458
[24-Jul-2025 16:27:31 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:27:31 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:27:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:27:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:35:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:37 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:37 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:37 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:37 UTC] 📊 Step: start
[24-Jul-2025 16:35:37 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:35:37 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:37 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:40 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:40 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:40 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:40 UTC] 📊 Step: extract_text
[24-Jul-2025 16:35:40 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:35:40 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:40 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:35:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: YES | Size: 42597
[24-Jul-2025 16:35:40 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_26_student_3_1753374458.pdf (Size: 42597 bytes)
[24-Jul-2025 16:35:40 UTC] ImprovedPDFProcessor: Starting improved PDF extraction: assignment_26_student_3_1753374458.pdf
[24-Jul-2025 16:35:40 UTC] ImprovedPDFProcessor: Manual extraction successful: 4259 characters
[24-Jul-2025 16:35:40 UTC] ImprovedPDFProcessor: Stream extraction successful: 4274 characters
[24-Jul-2025 16:35:40 UTC] ImprovedPDFProcessor: Extraction completed using: Content-focused extraction, Stream extraction - Final: 4274 characters
[24-Jul-2025 16:35:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:43 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:43 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:43 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:35:43 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:35:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:43 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:47 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:47 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:47 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:35:47 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:35:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:47 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:51 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:51 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:51 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:35:51 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:35:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:51 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Full text length: 4274
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:35:51 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:35:51 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:35:51 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:35:51 UTC] DEBUG: studentText length: 4274
[24-Jul-2025 16:35:51 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:35:51 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:35:51 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:35:51 UTC] DEBUG: Similarity: 0.37383177570093
[24-Jul-2025 16:35:51 UTC] DEBUG: Keyword Coverage: 0.72815533980583
[24-Jul-2025 16:35:51 UTC] DEBUG: Quality Score: 70
[24-Jul-2025 16:35:51 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Similarity Score: 0.37
[24-Jul-2025 16:35:51 UTC] GRADING DEBUG: Quality Score: 70
[24-Jul-2025 16:35:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:35:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:35:55 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:35:55 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:35:55 UTC] 📊 Step: complete
[24-Jul-2025 16:35:55 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:35:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:35:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:35:55 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:35:55 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:35:55 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:35:55 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:35:55 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:41:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:37 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:37 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:37 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:37 UTC] 📊 Step: start
[24-Jul-2025 16:41:37 UTC] 📊 All POST data: {"assignment_id":"26","step":"start"}
[24-Jul-2025 16:41:37 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:37 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:41 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:41 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:41 UTC] 📊 Step: extract_text
[24-Jul-2025 16:41:41 UTC] 📊 All POST data: {"assignment_id":"26","step":"extract_text"}
[24-Jul-2025 16:41:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:41 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: NO | Size: 0
[24-Jul-2025 16:41:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_26_student_3_1753374458.pdf | Exists: YES | Size: 42597
[24-Jul-2025 16:41:41 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_26_student_3_1753374458.pdf (Size: 42597 bytes)
[24-Jul-2025 16:41:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:44 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:44 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:44 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:41:44 UTC] 📊 All POST data: {"assignment_id":"26","step":"check_memorandum"}
[24-Jul-2025 16:41:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:44 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:47 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:47 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:47 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:41:47 UTC] 📊 All POST data: {"assignment_id":"26","step":"ai_analysis"}
[24-Jul-2025 16:41:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:47 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:51 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:51 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:51 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:41:51 UTC] 📊 All POST data: {"assignment_id":"26","step":"generate_grade"}
[24-Jul-2025 16:41:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:51 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Full text length: 10075
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Assignment ID: 26
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:41:51 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:41:51 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:41:51 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:41:51 UTC] DEBUG: studentText length: 10075
[24-Jul-2025 16:41:51 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:41:51 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:41:51 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:41:51 UTC] DEBUG: Similarity: 0.52344601962923
[24-Jul-2025 16:41:51 UTC] DEBUG: Keyword Coverage: 2.9126213592233
[24-Jul-2025 16:41:51 UTC] DEBUG: Quality Score: 70
[24-Jul-2025 16:41:51 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Similarity Score: 0.52
[24-Jul-2025 16:41:51 UTC] GRADING DEBUG: Quality Score: 70
[24-Jul-2025 16:41:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:41:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:41:55 UTC] 📊 POST assignment_id: 26
[24-Jul-2025 16:41:55 UTC] 📊 Parsed assignment_id: 26
[24-Jul-2025 16:41:55 UTC] 📊 Step: complete
[24-Jul-2025 16:41:55 UTC] 📊 All POST data: {"assignment_id":"26","step":"complete"}
[24-Jul-2025 16:41:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:41:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=26, student_id=1
[24-Jul-2025 16:41:55 UTC] ✅ FOUND SUBMISSION: ID=139, file_url=assignment_26_student_3_1753374458.pdf, text_len=0
[24-Jul-2025 16:41:55 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:41:55 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:41:55 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:41:55 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 16:55:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:29 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:29 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:29 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:29 UTC] 📊 Step: start
[24-Jul-2025 16:55:29 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 16:55:29 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:29 UTC] ❌ NO SUBMISSION FOUND for assignment_id=27, student_id=1
[24-Jul-2025 16:55:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:32 UTC] 📊 Step: extract_text
[24-Jul-2025 16:55:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 16:55:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:32 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 16:55:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:35 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:35 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:35 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:35 UTC] 📊 Step: check_memorandum
[24-Jul-2025 16:55:35 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 16:55:35 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:35 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 16:55:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:39 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:39 UTC] 📊 Step: ai_analysis
[24-Jul-2025 16:55:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 16:55:39 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:39 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 16:55:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:42 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:42 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:42 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:42 UTC] 📊 Step: generate_grade
[24-Jul-2025 16:55:42 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 16:55:42 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:42 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 16:55:42 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 16:55:42 UTC] DEBUG: studentText type: string
[24-Jul-2025 16:55:42 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 16:55:42 UTC] DEBUG: studentText length: 445
[24-Jul-2025 16:55:42 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 16:55:42 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 16:55:42 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 16:55:42 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 16:55:42 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 16:55:42 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 16:55:42 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 16:55:42 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 16:55:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 16:55:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 16:55:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 16:55:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 16:55:46 UTC] 📊 Step: complete
[24-Jul-2025 16:55:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 16:55:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 16:55:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 16:55:46 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 16:55:46 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 16:55:46 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:55:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 16:55:46 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:02:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:33 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:33 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:33 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:33 UTC] 📊 Step: start
[24-Jul-2025 17:02:33 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:02:33 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:33 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:36 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:02:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:02:36 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:36 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:40 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:40 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:40 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:40 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:02:40 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:02:40 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:40 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:43 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:02:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:02:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:44 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:47 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:47 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:47 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:02:47 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:02:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:47 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:02:47 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:02:47 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:02:47 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:02:47 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:02:47 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:02:47 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:02:47 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:02:47 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:02:47 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:02:47 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:02:47 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:02:47 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:02:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:02:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:02:51 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:02:51 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:02:51 UTC] 📊 Step: complete
[24-Jul-2025 17:02:51 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:02:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:02:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:02:51 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:02:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:02:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:02:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:02:52 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:08:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:41 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:41 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:41 UTC] 📊 Step: start
[24-Jul-2025 17:08:41 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:08:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:41 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:44 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:44 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:44 UTC] 📊 Step: extract_text
[24-Jul-2025 17:08:44 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:08:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:44 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:48 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:48 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:48 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:08:48 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:08:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:48 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:52 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:52 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:52 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:08:52 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:08:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:52 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:55 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:55 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:55 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:08:55 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:08:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:55 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:08:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:08:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:08:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:08:55 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:08:55 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:08:55 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:08:55 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:08:55 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:08:55 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:08:55 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:08:55 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:08:55 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:08:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:08:59 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:08:59 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:08:59 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:08:59 UTC] 📊 Step: complete
[24-Jul-2025 17:08:59 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:08:59 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:08:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:08:59 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:08:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:08:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:08:59 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:08:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:21:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:21:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:21:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:21:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:21:43 UTC] 📊 Step: start
[24-Jul-2025 17:21:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:21:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:21:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:21:43 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:21:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:21:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:21:47 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:21:47 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:21:47 UTC] 📊 Step: extract_text
[24-Jul-2025 17:21:47 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:21:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:21:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:21:47 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:21:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:21:50 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:21:50 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:21:50 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:21:50 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:21:50 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:21:50 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:21:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:21:50 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:21:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:21:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:21:54 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:21:54 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:21:54 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:21:54 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:21:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:21:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:21:54 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:21:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:21:57 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:21:57 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:21:57 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:21:57 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:21:57 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:21:57 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:21:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:21:57 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:21:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:21:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:21:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:21:57 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:21:57 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:21:57 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:21:57 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:21:57 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:21:57 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:21:57 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:21:57 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:21:57 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:22:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:01 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:01 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:01 UTC] 📊 Step: complete
[24-Jul-2025 17:22:01 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:22:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:01 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:22:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:22:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:22:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:22:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:11 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:11 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:11 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:11 UTC] 📊 Step: start
[24-Jul-2025 17:22:11 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:22:11 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:11 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:16 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:16 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:16 UTC] 📊 Step: extract_text
[24-Jul-2025 17:22:16 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:22:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:16 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:19 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:19 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:19 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:22:19 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:22:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:19 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:23 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:23 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:23 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:23 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:22:23 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:22:23 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:23 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:27 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:27 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:27 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:27 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:22:27 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:22:27 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:27 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:22:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:22:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:22:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:22:27 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:22:27 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:22:27 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:22:27 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:22:27 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:22:27 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:22:27 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:22:27 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:22:27 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:22:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:32 UTC] 📊 Step: complete
[24-Jul-2025 17:22:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:22:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:32 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:32 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:22:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:22:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:22:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:22:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:41 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:41 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:41 UTC] 📊 Step: start
[24-Jul-2025 17:22:41 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:22:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:41 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:45 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:45 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:45 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:45 UTC] 📊 Step: extract_text
[24-Jul-2025 17:22:45 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:22:45 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:45 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:49 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:49 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:49 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:22:49 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:22:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:49 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:52 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:52 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:52 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:22:52 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:22:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:52 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:22:56 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:22:56 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:22:56 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:22:56 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:22:56 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:22:56 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:22:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:22:56 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:22:56 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:22:56 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:22:56 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:22:56 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:22:56 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:22:56 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:22:56 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:22:56 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:22:56 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:22:56 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:22:56 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:22:56 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:23:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:00 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:00 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:00 UTC] 📊 Step: complete
[24-Jul-2025 17:23:00 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:23:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:01 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:23:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:23:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:10 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:10 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:10 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:10 UTC] 📊 Step: start
[24-Jul-2025 17:23:10 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:23:10 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:10 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:14 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:14 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:14 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:14 UTC] 📊 Step: extract_text
[24-Jul-2025 17:23:14 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:23:14 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:14 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:18 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:18 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:18 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:18 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:23:18 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:23:18 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:19 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:22 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:22 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:22 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:23:22 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:23:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:22 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:26 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:26 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:26 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:26 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:23:26 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:23:26 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:26 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:23:26 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:23:26 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:23:26 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:23:26 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:23:26 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:23:26 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:23:26 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:23:26 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:23:26 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:23:26 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:23:26 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:23:26 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:23:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:30 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:30 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:30 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:30 UTC] 📊 Step: complete
[24-Jul-2025 17:23:30 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:23:30 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:30 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:30 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:23:30 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:30 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:31 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:23:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:39 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:39 UTC] 📊 Step: start
[24-Jul-2025 17:23:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:23:39 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:39 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:43 UTC] 📊 Step: extract_text
[24-Jul-2025 17:23:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:23:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:44 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:48 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:48 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:48 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:23:48 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:23:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:48 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:51 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:51 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:51 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:23:51 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:23:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:51 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:55 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:55 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:55 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:23:55 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:23:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:55 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:23:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:23:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:23:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:23:55 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:23:55 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:23:55 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:23:55 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:23:55 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:23:55 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:23:55 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:23:55 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:23:55 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:23:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:23:59 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:23:59 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:23:59 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:23:59 UTC] 📊 Step: complete
[24-Jul-2025 17:23:59 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:23:59 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:23:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:23:59 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:23:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:23:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:59 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:23:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:24:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:08 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:08 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:08 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:08 UTC] 📊 Step: start
[24-Jul-2025 17:24:08 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:24:08 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:09 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:12 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:12 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:12 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:12 UTC] 📊 Step: extract_text
[24-Jul-2025 17:24:12 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:24:12 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:12 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:16 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:16 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:16 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:16 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:24:16 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:24:16 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:16 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:21 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:21 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:21 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:24:21 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:24:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:21 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:24 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:24 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:24 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:24 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:24:24 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:24:24 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:24 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:24:24 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:24:24 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:24:24 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:24:24 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:24:24 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:24:24 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:24:24 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:24:24 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:24:24 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:24:24 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:24:24 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:24:24 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:24:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:28 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:28 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:28 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:28 UTC] 📊 Step: complete
[24-Jul-2025 17:24:28 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:24:28 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:28 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:24:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:24:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:24:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:24:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:43 UTC] 📊 Step: start
[24-Jul-2025 17:24:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:24:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:43 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:49 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:49 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:49 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:49 UTC] 📊 Step: extract_text
[24-Jul-2025 17:24:49 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:24:49 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:49 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:24:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:24:54 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:24:54 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:24:54 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:24:54 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:24:54 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:24:54 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:24:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:24:54 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:01 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:01 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:01 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:25:01 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:25:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:01 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:05 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:05 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:05 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:05 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:25:05 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:25:05 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:05 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:25:05 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:25:05 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:25:05 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:25:05 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:25:05 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:25:05 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:25:05 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:25:05 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:25:05 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:25:05 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:25:05 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:25:05 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:25:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:10 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:10 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:10 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:10 UTC] 📊 Step: complete
[24-Jul-2025 17:25:10 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:25:10 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:10 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:10 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:25:10 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:25:10 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:25:10 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:25:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:22 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:22 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:22 UTC] 📊 Step: start
[24-Jul-2025 17:25:22 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:25:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:22 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:27 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:27 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:27 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:27 UTC] 📊 Step: extract_text
[24-Jul-2025 17:25:27 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:25:27 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:27 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:31 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:31 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:31 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:31 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:25:31 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:25:31 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:31 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:36 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:36 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:25:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:25:36 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:36 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:43 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:25:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:25:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:43 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:25:43 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:25:43 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:25:43 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:25:43 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:25:43 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:25:43 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:25:43 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:25:43 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:25:43 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:25:43 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:25:43 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:25:43 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:25:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:25:47 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:25:47 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:25:47 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:25:47 UTC] 📊 Step: complete
[24-Jul-2025 17:25:47 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:25:47 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:25:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:25:47 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:25:47 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:25:47 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:25:47 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:25:47 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:26:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:01 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:01 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:01 UTC] 📊 Step: start
[24-Jul-2025 17:26:01 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:26:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:01 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:05 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:05 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:05 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:05 UTC] 📊 Step: extract_text
[24-Jul-2025 17:26:05 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:26:05 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:05 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:09 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:09 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:09 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:09 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:26:09 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:26:09 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:09 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:13 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:13 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:13 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:13 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:26:13 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:26:13 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:13 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:17 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:17 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:17 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:17 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:26:17 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:26:17 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:17 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:26:17 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:26:17 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:26:17 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:26:17 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:26:17 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:26:17 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:26:17 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:26:17 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:26:17 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:26:17 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:26:17 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:26:17 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:26:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:21 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:21 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:21 UTC] 📊 Step: complete
[24-Jul-2025 17:26:21 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:26:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:21 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:21 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:26:21 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:26:21 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:26:21 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:26:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:33 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:33 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:33 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:33 UTC] 📊 Step: start
[24-Jul-2025 17:26:33 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:26:33 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:33 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:36 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:26:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:26:36 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:36 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:41 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:41 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:41 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:41 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:26:41 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:26:41 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:41 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:44 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:44 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:44 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:26:44 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:26:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:44 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:48 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:48 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:48 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:26:48 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:26:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:49 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:26:49 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:26:49 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:26:49 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:26:49 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:26:49 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:26:49 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:26:49 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:26:49 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:26:49 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:26:49 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:26:49 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:26:49 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:26:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:26:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:26:52 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:26:52 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:26:52 UTC] 📊 Step: complete
[24-Jul-2025 17:26:52 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:26:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:26:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:26:52 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:26:52 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:26:52 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:26:52 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:26:52 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:27:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:01 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:01 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:01 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:01 UTC] 📊 Step: start
[24-Jul-2025 17:27:01 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:27:01 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:01 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:05 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:05 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:05 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:05 UTC] 📊 Step: extract_text
[24-Jul-2025 17:27:05 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:27:05 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:05 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:09 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:09 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:09 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:09 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:27:09 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:27:09 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:10 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:14 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:14 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:14 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:14 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:27:14 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:27:14 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:14 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:18 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:18 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:18 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:18 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:27:18 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:27:18 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:18 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:27:18 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:27:18 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:27:18 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:27:18 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:27:18 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:27:18 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:27:18 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:27:18 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:27:18 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:27:18 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:27:18 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:27:18 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:27:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:21 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:21 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:21 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:21 UTC] 📊 Step: complete
[24-Jul-2025 17:27:21 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:27:21 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:21 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:21 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:27:21 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:27:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:27:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:27:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:32 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:32 UTC] 📊 Step: start
[24-Jul-2025 17:27:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:27:32 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:32 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:36 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:27:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:27:36 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:36 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:40 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:40 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:40 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:40 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:27:40 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:27:40 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:40 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:44 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:44 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:44 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:44 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:27:44 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:27:44 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:44 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:48 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:48 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:48 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:48 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:27:48 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:27:48 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:48 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:27:48 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:27:48 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:27:48 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:27:48 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:27:48 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:27:48 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:27:48 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:27:48 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:27:48 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:27:48 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:27:48 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:27:48 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:27:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:27:52 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:27:52 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:27:52 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:27:52 UTC] 📊 Step: complete
[24-Jul-2025 17:27:52 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:27:52 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:27:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:27:53 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:27:53 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:27:53 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:27:53 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:27:53 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:28:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:02 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:02 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:02 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:02 UTC] 📊 Step: start
[24-Jul-2025 17:28:02 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:28:02 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:03 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:07 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:07 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:07 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:07 UTC] 📊 Step: extract_text
[24-Jul-2025 17:28:07 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:28:07 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:07 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:11 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:11 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:11 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:11 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:28:11 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:28:11 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:11 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:15 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:15 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:15 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:15 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:28:15 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:28:15 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:15 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:19 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:19 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:19 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:19 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:28:19 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:28:19 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:19 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:28:19 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:28:19 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:28:19 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:28:19 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:28:19 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:28:19 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:28:19 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:28:19 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:28:19 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:28:19 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:28:19 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:28:19 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:28:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:22 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:22 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:22 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:22 UTC] 📊 Step: complete
[24-Jul-2025 17:28:22 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:28:22 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:22 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:28:22 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:28:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:28:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:28:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:39 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:39 UTC] 📊 Step: start
[24-Jul-2025 17:28:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:28:39 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:39 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:43 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:43 UTC] 📊 Step: extract_text
[24-Jul-2025 17:28:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:28:43 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:43 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:46 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:46 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:28:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:28:46 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:47 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:51 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:51 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:51 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:51 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:28:51 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:28:51 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:51 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:28:55 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:28:55 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:28:55 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:28:55 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:28:55 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:28:55 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:28:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:28:55 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Full text length: 445
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:28:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:28:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:28:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:28:55 UTC] DEBUG: studentText length: 445
[24-Jul-2025 17:28:55 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:28:55 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:28:55 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:28:55 UTC] DEBUG: Similarity: 6.1935483870968
[24-Jul-2025 17:28:55 UTC] DEBUG: Keyword Coverage: 5.8252427184466
[24-Jul-2025 17:28:55 UTC] DEBUG: Quality Score: 46
[24-Jul-2025 17:28:55 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Similarity Score: 6.19
[24-Jul-2025 17:28:55 UTC] GRADING DEBUG: Quality Score: 46
[24-Jul-2025 17:29:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:00 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:29:00 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:00 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:00 UTC] 📊 Step: complete
[24-Jul-2025 17:29:00 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:29:00 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:29:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:29:00 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:29:00 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:29:00 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:29:00 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:29:00 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:29:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:14 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:29:14 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:14 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:14 UTC] 📊 Step: start
[24-Jul-2025 17:29:14 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:29:14 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:29:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:29:14 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:29:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:20 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:29:20 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:20 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:20 UTC] 📊 Step: extract_text
[24-Jul-2025 17:29:20 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:29:20 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:29:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:29:20 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:29:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:25 UTC] 📊 Session user_id: 1
[24-Jul-2025 17:29:25 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:25 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:25 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:29:25 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:29:25 UTC] 📊 Session data: {"user_id":"1","student_id":"1","user_type":"student"}
[24-Jul-2025 17:29:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=1
[24-Jul-2025 17:29:25 UTC] ✅ FOUND SUBMISSION: ID=144, file_url=, text_len=445
[24-Jul-2025 17:29:28 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:28 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:28 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:28 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:29:28 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:29:28 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:28 UTC] ✅ FOUND SUBMISSION: ID=145, file_url=assignment_27_student_3_1753376152.pdf, text_len=0
[24-Jul-2025 17:29:32 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:32 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:29:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:29:32 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:32 UTC] ✅ FOUND SUBMISSION: ID=145, file_url=assignment_27_student_3_1753376152.pdf, text_len=0
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Full text length: 10264
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:29:32 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:29:32 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:29:32 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:29:32 UTC] DEBUG: studentText length: 10264
[24-Jul-2025 17:29:32 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:29:32 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:29:32 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:29:32 UTC] DEBUG: Similarity: 0.10362694300518
[24-Jul-2025 17:29:32 UTC] DEBUG: Keyword Coverage: 0.72815533980583
[24-Jul-2025 17:29:32 UTC] DEBUG: Quality Score: 70
[24-Jul-2025 17:29:32 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Similarity Score: 0.1
[24-Jul-2025 17:29:32 UTC] GRADING DEBUG: Quality Score: 70
[24-Jul-2025 17:29:37 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:37 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:37 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:37 UTC] 📊 Step: start
[24-Jul-2025 17:29:37 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:29:37 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:37 UTC] ✅ FOUND SUBMISSION: ID=145, file_url=assignment_27_student_3_1753376152.pdf, text_len=0
[24-Jul-2025 17:29:40 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:40 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:40 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:40 UTC] 📊 Step: extract_text
[24-Jul-2025 17:29:40 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:29:40 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:40 UTC] ✅ FOUND SUBMISSION: ID=145, file_url=assignment_27_student_3_1753376152.pdf, text_len=0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:29:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753376152.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:29:40 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753376152.pdf (Size: 30572 bytes)
[24-Jul-2025 17:29:40 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:29:40 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:29:43 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:43 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:29:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:29:43 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:43 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:29:47 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:47 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:47 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:47 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:29:47 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:29:47 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:47 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:29:50 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:50 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:50 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:50 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:29:50 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:29:50 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:50 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Full text length: 10264
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:29:50 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:29:50 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:29:50 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:29:50 UTC] DEBUG: studentText length: 10264
[24-Jul-2025 17:29:50 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:29:50 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:29:50 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:29:50 UTC] DEBUG: Similarity: 0.10362694300518
[24-Jul-2025 17:29:50 UTC] DEBUG: Keyword Coverage: 0.72815533980583
[24-Jul-2025 17:29:50 UTC] DEBUG: Quality Score: 70
[24-Jul-2025 17:29:50 UTC] DEBUG: Final Grade: 20
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: AI Score: 20
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Similarity Score: 0.1
[24-Jul-2025 17:29:50 UTC] GRADING DEBUG: Quality Score: 70
[24-Jul-2025 17:29:53 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:29:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:29:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:29:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:29:53 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:29:53 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:29:53 UTC] 📊 Step: complete
[24-Jul-2025 17:29:53 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:29:53 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:29:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:29:53 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:29:53 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:29:53 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:29:53 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:29:53 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:30:02 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:02 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:02 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:02 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:02 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:02 UTC] 📊 Step: start
[24-Jul-2025 17:30:02 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:30:02 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:02 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:30:06 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:06 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:06 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:06 UTC] 📊 Step: extract_text
[24-Jul-2025 17:30:06 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:30:06 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:06 UTC] ✅ FOUND SUBMISSION: ID=143, file_url=assignment_27_student_3_1753376127.pdf, text_len=0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753376127.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:30:06 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753376127.pdf (Size: 30572 bytes)
[24-Jul-2025 17:30:06 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:30:06 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:30:09 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:09 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:09 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:09 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:30:09 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:30:09 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:09 UTC] ✅ FOUND SUBMISSION: ID=164, file_url=assignment_27_student_3_1753378199.pdf, text_len=0
[24-Jul-2025 17:30:13 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:13 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:13 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:13 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:30:13 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:30:13 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:14 UTC] ✅ FOUND SUBMISSION: ID=164, file_url=assignment_27_student_3_1753378199.pdf, text_len=0
[24-Jul-2025 17:30:17 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:17 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:17 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:17 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:30:17 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:30:17 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:17 UTC] ✅ FOUND SUBMISSION: ID=164, file_url=assignment_27_student_3_1753378199.pdf, text_len=0
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:30:17 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:30:17 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:30:17 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:30:17 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:30:17 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:30:17 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:30:17 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:30:17 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:30:17 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:30:17 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:30:17 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:30:17 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:30:21 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:21 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:21 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:21 UTC] 📊 Step: complete
[24-Jul-2025 17:30:21 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:30:21 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:21 UTC] ✅ FOUND SUBMISSION: ID=164, file_url=assignment_27_student_3_1753378199.pdf, text_len=0
[24-Jul-2025 17:30:21 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:30:21 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:30:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:30:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:30:30 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:30 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:30 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:30 UTC] 📊 Step: start
[24-Jul-2025 17:30:30 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:30:30 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:30 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:34 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:34 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:34 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:34 UTC] 📊 Step: extract_text
[24-Jul-2025 17:30:34 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:30:34 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:34 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:30:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378228.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:30:34 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378228.pdf (Size: 30572 bytes)
[24-Jul-2025 17:30:34 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:30:34 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:30:39 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:39 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:30:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:30:39 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:39 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:42 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:42 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:42 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:30:42 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:30:42 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:42 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:46 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:30:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:30:46 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:46 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:30:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:30:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:30:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:30:46 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:30:46 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:30:46 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:30:46 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:30:46 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:30:46 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:30:46 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:30:46 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:30:46 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:30:50 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:30:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:30:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:30:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:30:50 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:30:50 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:30:50 UTC] 📊 Step: complete
[24-Jul-2025 17:30:50 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:30:50 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:30:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:30:50 UTC] ✅ FOUND SUBMISSION: ID=165, file_url=assignment_27_student_3_1753378228.pdf, text_len=0
[24-Jul-2025 17:30:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:30:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:30:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:30:51 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:31:00 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:00 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:00 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:00 UTC] 📊 Step: start
[24-Jul-2025 17:31:00 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:31:00 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:01 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:04 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:04 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:04 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:04 UTC] 📊 Step: extract_text
[24-Jul-2025 17:31:04 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:31:04 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:05 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378257.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:31:05 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378257.pdf (Size: 30572 bytes)
[24-Jul-2025 17:31:05 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:31:05 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:31:08 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:08 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:08 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:08 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:31:08 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:31:08 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:09 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:12 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:12 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:12 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:12 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:31:12 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:31:12 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:12 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:16 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:16 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:16 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:16 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:31:16 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:31:16 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:16 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:31:16 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:31:16 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:31:16 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:31:16 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:31:16 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:31:16 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:31:16 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:31:16 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:31:16 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:31:16 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:31:16 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:31:16 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:31:20 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:20 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:20 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:20 UTC] 📊 Step: complete
[24-Jul-2025 17:31:20 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:31:20 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:20 UTC] ✅ FOUND SUBMISSION: ID=166, file_url=assignment_27_student_3_1753378257.pdf, text_len=0
[24-Jul-2025 17:31:20 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:31:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:31:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:31:21 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:31:30 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:30 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:30 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:30 UTC] 📊 Step: start
[24-Jul-2025 17:31:30 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:31:30 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:30 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:34 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:34 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:34 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:34 UTC] 📊 Step: extract_text
[24-Jul-2025 17:31:34 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:31:34 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:34 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:31:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378287.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:31:34 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378287.pdf (Size: 30572 bytes)
[24-Jul-2025 17:31:34 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:31:34 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:31:38 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:38 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:38 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:38 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:31:38 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:31:38 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:39 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:42 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:42 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:42 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:31:42 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:31:42 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:42 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:46 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:31:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:31:46 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:46 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:31:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:31:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:31:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:31:46 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:31:46 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:31:46 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:31:46 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:31:46 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:31:46 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:31:46 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:31:46 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:31:46 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:31:50 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:31:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:31:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:31:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:31:50 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:31:50 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:31:50 UTC] 📊 Step: complete
[24-Jul-2025 17:31:50 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:31:50 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:31:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:31:50 UTC] ✅ FOUND SUBMISSION: ID=167, file_url=assignment_27_student_3_1753378287.pdf, text_len=0
[24-Jul-2025 17:31:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:31:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:31:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:31:51 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:32:00 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:00 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:00 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:00 UTC] 📊 Step: start
[24-Jul-2025 17:32:00 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:32:00 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:00 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:03 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:03 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:03 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:03 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:03 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:03 UTC] 📊 Step: extract_text
[24-Jul-2025 17:32:03 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:32:03 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:03 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:32:03 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378317.pdf (Size: 30572 bytes)
[24-Jul-2025 17:32:03 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:32:03 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:32:07 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:07 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:07 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:07 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:32:07 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:32:07 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:07 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:11 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:11 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:11 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:11 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:32:11 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:32:11 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:12 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:15 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:15 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:15 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:15 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:15 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:15 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:32:15 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:32:15 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:15 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:32:15 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:32:15 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:32:15 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:32:15 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:32:15 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:32:15 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:32:15 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:32:15 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:32:15 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:32:15 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:32:15 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:32:15 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:32:19 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:19 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:19 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:19 UTC] 📊 Step: complete
[24-Jul-2025 17:32:19 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:32:19 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:19 UTC] ✅ FOUND SUBMISSION: ID=168, file_url=assignment_27_student_3_1753378317.pdf, text_len=0
[24-Jul-2025 17:32:20 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:32:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:32:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:32:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:32:28 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:28 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:28 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:28 UTC] 📊 Step: start
[24-Jul-2025 17:32:28 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:32:28 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:28 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:32 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:32 UTC] 📊 Step: extract_text
[24-Jul-2025 17:32:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:32:32 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:32 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:32:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378346.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:32:32 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378346.pdf (Size: 30572 bytes)
[24-Jul-2025 17:32:32 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:32:32 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:32:36 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:36 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:32:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:32:36 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:36 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:40 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:40 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:40 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:40 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:32:40 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:32:40 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:40 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:44 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:44 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:44 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:44 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:32:44 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:32:44 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:44 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:32:44 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:32:44 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:32:44 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:32:44 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:32:44 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:32:44 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:32:44 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:32:44 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:32:44 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:32:44 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:32:44 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:32:44 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:32:48 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:48 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:48 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:48 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:48 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:48 UTC] 📊 Step: complete
[24-Jul-2025 17:32:48 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:32:48 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:48 UTC] ✅ FOUND SUBMISSION: ID=169, file_url=assignment_27_student_3_1753378346.pdf, text_len=0
[24-Jul-2025 17:32:49 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:32:49 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:32:49 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:32:49 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:32:59 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:32:59 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:32:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:32:59 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:32:59 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:32:59 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:32:59 UTC] 📊 Step: start
[24-Jul-2025 17:32:59 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:32:59 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:32:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:32:59 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:03 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:03 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:03 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:03 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:03 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:03 UTC] 📊 Step: extract_text
[24-Jul-2025 17:33:03 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:33:03 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:04 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:04 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378376.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:33:04 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378376.pdf (Size: 30572 bytes)
[24-Jul-2025 17:33:04 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:33:04 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:33:07 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:07 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:07 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:07 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:33:07 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:33:07 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:07 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:11 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:11 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:11 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:11 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:33:11 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:33:11 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:11 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:16 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:16 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:16 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:16 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:33:16 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:33:16 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:16 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:33:16 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:33:16 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:33:16 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:33:16 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:33:16 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:33:16 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:33:16 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:33:16 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:33:16 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:33:16 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:33:16 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:33:16 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:33:20 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:20 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:20 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:20 UTC] 📊 Step: complete
[24-Jul-2025 17:33:20 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:33:20 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:20 UTC] ✅ FOUND SUBMISSION: ID=170, file_url=assignment_27_student_3_1753378376.pdf, text_len=0
[24-Jul-2025 17:33:20 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:33:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:33:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:33:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:33:28 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:28 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:28 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:28 UTC] 📊 Step: start
[24-Jul-2025 17:33:28 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:33:28 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:28 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:32 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:32 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:32 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:32 UTC] 📊 Step: extract_text
[24-Jul-2025 17:33:32 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:33:32 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:32 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:33:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378406.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:33:32 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378406.pdf (Size: 30572 bytes)
[24-Jul-2025 17:33:32 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:33:32 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:33:35 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:35 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:35 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:35 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:35 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:35 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:33:35 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:33:35 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:35 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:39 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:39 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:33:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:33:39 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:39 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:42 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:42 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:42 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:42 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:33:42 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:33:42 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:42 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:33:42 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:33:42 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:33:42 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:33:42 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:33:42 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:33:42 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:33:42 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:33:42 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:33:42 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:33:42 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:33:42 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:33:42 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:33:46 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:46 UTC] 📊 Step: complete
[24-Jul-2025 17:33:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:33:46 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:46 UTC] ✅ FOUND SUBMISSION: ID=171, file_url=assignment_27_student_3_1753378406.pdf, text_len=0
[24-Jul-2025 17:33:46 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:33:46 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:33:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:33:46 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:33:57 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:33:57 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:33:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:33:57 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:33:57 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:33:57 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:33:57 UTC] 📊 Step: start
[24-Jul-2025 17:33:57 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:33:57 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:33:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:33:57 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:00 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:00 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:00 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:00 UTC] 📊 Step: extract_text
[24-Jul-2025 17:34:00 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:34:00 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:00 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378434.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:34:00 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378434.pdf (Size: 30572 bytes)
[24-Jul-2025 17:34:00 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:34:00 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:34:04 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:04 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:04 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:04 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:34:04 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:34:04 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:04 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:09 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:09 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:09 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:09 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:34:09 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:34:09 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:09 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:13 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:13 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:13 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:13 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:34:13 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:34:13 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:14 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:34:14 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:34:14 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:34:14 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:34:14 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:34:14 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:34:14 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:34:14 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:34:14 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:34:14 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:34:14 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:34:14 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:34:14 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:34:18 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:18 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:18 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:18 UTC] 📊 Step: complete
[24-Jul-2025 17:34:18 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:34:18 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:18 UTC] ✅ FOUND SUBMISSION: ID=172, file_url=assignment_27_student_3_1753378434.pdf, text_len=0
[24-Jul-2025 17:34:18 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:34:18 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:34:18 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:34:18 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:34:26 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:26 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:26 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:26 UTC] 📊 Step: start
[24-Jul-2025 17:34:26 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:34:26 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:26 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:30 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:30 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:30 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:30 UTC] 📊 Step: extract_text
[24-Jul-2025 17:34:30 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:34:30 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:31 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:34:31 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378464.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:34:31 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378464.pdf (Size: 30572 bytes)
[24-Jul-2025 17:34:31 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:34:31 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:34:34 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:34 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:34 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:34 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:34:34 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:34:34 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:34 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:38 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:38 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:38 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:38 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:34:38 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:34:38 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:38 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:43 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:43 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:43 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:43 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:34:43 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:34:43 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:43 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:34:43 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:34:43 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:34:43 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:34:43 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:34:43 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:34:43 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:34:43 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:34:43 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:34:43 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:34:43 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:34:43 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:34:43 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:34:46 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:46 UTC] 📊 Step: complete
[24-Jul-2025 17:34:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:34:46 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:46 UTC] ✅ FOUND SUBMISSION: ID=173, file_url=assignment_27_student_3_1753378464.pdf, text_len=0
[24-Jul-2025 17:34:46 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:34:46 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:34:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:34:47 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:34:58 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:34:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:34:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:34:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:34:58 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:34:58 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:34:58 UTC] 📊 Step: start
[24-Jul-2025 17:34:58 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:34:58 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:34:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:34:58 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:02 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:02 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:02 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:02 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:02 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:02 UTC] 📊 Step: extract_text
[24-Jul-2025 17:35:02 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:35:02 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:02 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378496.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:35:02 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378496.pdf (Size: 30572 bytes)
[24-Jul-2025 17:35:02 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:35:02 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:35:10 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:10 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:10 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:10 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:10 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:10 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:35:10 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:35:10 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:10 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:14 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:14 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:14 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:14 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:35:14 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:35:14 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:15 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:18 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:18 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:18 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:18 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:35:18 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:35:18 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:18 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:35:18 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:35:18 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:35:18 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:35:18 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:35:18 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:35:18 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:35:18 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:35:18 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:35:18 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:35:18 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:35:18 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:35:18 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:35:23 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:23 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:23 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:23 UTC] 📊 Step: complete
[24-Jul-2025 17:35:23 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:35:23 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:23 UTC] ✅ FOUND SUBMISSION: ID=174, file_url=assignment_27_student_3_1753378496.pdf, text_len=0
[24-Jul-2025 17:35:23 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:35:23 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:35:23 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:35:23 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:35:36 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:36 UTC] 📊 Step: start
[24-Jul-2025 17:35:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:35:36 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:36 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:41 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:41 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:41 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:41 UTC] 📊 Step: extract_text
[24-Jul-2025 17:35:41 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:35:41 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:41 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:35:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378533.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:35:41 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378533.pdf (Size: 30572 bytes)
[24-Jul-2025 17:35:41 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:35:41 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:35:46 UTC] 🔧 FIXED: Set session to use student_id=3 instead of student_id=1
[24-Jul-2025 17:35:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:46 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:35:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:35:46 UTC] 📊 Session data: {"user_id":3,"student_id":3,"user_type":"student"}
[24-Jul-2025 17:35:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:47 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:51 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:35:51 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:51 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:51 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:51 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:51 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:35:51 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:35:51 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:35:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:51 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:51 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:35:51 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:35:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:35:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:54 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:54 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:54 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:35:54 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:35:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:35:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:54 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:35:54 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:35:54 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:35:54 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:35:54 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:35:54 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:35:54 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:35:54 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:35:54 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:35:54 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:35:54 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:35:54 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:35:54 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:35:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:35:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:35:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:35:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:35:58 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:35:58 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:35:58 UTC] 📊 Step: complete
[24-Jul-2025 17:35:58 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:35:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:35:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:35:58 UTC] ✅ FOUND SUBMISSION: ID=175, file_url=assignment_27_student_3_1753378533.pdf, text_len=0
[24-Jul-2025 17:35:58 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:35:58 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:35:58 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:35:58 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:36:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:05 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:05 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:05 UTC] 📊 Step: start
[24-Jul-2025 17:36:05 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:36:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:05 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:08 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:08 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:08 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:08 UTC] 📊 Step: extract_text
[24-Jul-2025 17:36:08 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:36:08 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:08 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378563.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:36:08 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378563.pdf (Size: 30572 bytes)
[24-Jul-2025 17:36:08 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:36:08 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:36:12 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:12 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:12 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:12 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:36:12 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:36:12 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:12 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:16 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:16 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:16 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:16 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:36:16 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:36:16 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:16 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:16 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:36:16 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:36:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:19 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:19 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:19 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:36:19 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:36:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:19 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:36:19 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:36:19 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:36:19 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:36:19 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:36:19 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:36:19 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:36:19 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:36:19 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:36:19 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:36:19 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:36:19 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:36:19 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:36:22 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:22 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:22 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:22 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:22 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:22 UTC] 📊 Step: complete
[24-Jul-2025 17:36:22 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:36:22 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:22 UTC] ✅ FOUND SUBMISSION: ID=176, file_url=assignment_27_student_3_1753378563.pdf, text_len=0
[24-Jul-2025 17:36:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:36:23 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:36:23 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:36:23 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:36:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:31 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:31 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:31 UTC] 📊 Step: start
[24-Jul-2025 17:36:31 UTC] 📊 All POST data: {"assignment_id":"27","step":"start"}
[24-Jul-2025 17:36:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:31 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:36 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:36 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:36:36 UTC] 📊 All POST data: {"assignment_id":"27","step":"extract_text"}
[24-Jul-2025 17:36:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:36 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:36:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378589.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:36:36 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_27_student_3_1753378589.pdf (Size: 30572 bytes)
[24-Jul-2025 17:36:36 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:36:36 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:36:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:39 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:39 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:39 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:36:39 UTC] 📊 All POST data: {"assignment_id":"27","step":"check_memorandum"}
[24-Jul-2025 17:36:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:39 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:42 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:42 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:36:42 UTC] 📊 All POST data: {"assignment_id":"27","step":"ai_analysis"}
[24-Jul-2025 17:36:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:42 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:42 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:36:42 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:36:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:46 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:46 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:36:46 UTC] 📊 All POST data: {"assignment_id":"27","step":"generate_grade"}
[24-Jul-2025 17:36:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:46 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Memorandum length: 1500
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Assignment ID: 27
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:36:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:36:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:36:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:36:46 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:36:46 UTC] DEBUG: memorandumData length: 1500
[24-Jul-2025 17:36:46 UTC] DEBUG: Extracted memorandum length: 1500
[24-Jul-2025 17:36:46 UTC] DEBUG: Memorandum preview: Memo / Model Answer 1. Importing and Cleaning Data: I would begin by importing data from sources such as Excel, SQL Server, or cloud platforms. Using Power Query, I would clean the data by removing nu
[24-Jul-2025 17:36:46 UTC] DEBUG: Similarity: 13.836477987421
[24-Jul-2025 17:36:46 UTC] DEBUG: Keyword Coverage: 31.31067961165
[24-Jul-2025 17:36:46 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:36:46 UTC] DEBUG: Final Grade: 31.02
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: AI Score: 31.02
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Similarity Score: 13.84
[24-Jul-2025 17:36:46 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:36:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:36:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:36:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:36:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:36:49 UTC] 📊 POST assignment_id: 27
[24-Jul-2025 17:36:49 UTC] 📊 Parsed assignment_id: 27
[24-Jul-2025 17:36:49 UTC] 📊 Step: complete
[24-Jul-2025 17:36:49 UTC] 📊 All POST data: {"assignment_id":"27","step":"complete"}
[24-Jul-2025 17:36:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:36:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=27, student_id=3
[24-Jul-2025 17:36:49 UTC] ✅ FOUND SUBMISSION: ID=177, file_url=assignment_27_student_3_1753378589.pdf, text_len=0
[24-Jul-2025 17:36:50 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:36:50 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:36:50 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:36:50 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:41:08 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:08 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:08 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:08 UTC] 📊 Step: start
[24-Jul-2025 17:41:08 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:41:08 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:08 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:13 UTC] 📊 Step: extract_text
[24-Jul-2025 17:41:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:41:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:13 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378865.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:41:13 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378865.pdf (Size: 30572 bytes)
[24-Jul-2025 17:41:13 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:41:13 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:41:16 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:16 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:16 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:16 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:41:16 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:41:16 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:16 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:19 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:41:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:41:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:19 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:19 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:41:19 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:41:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:23 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:41:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:41:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:23 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:41:23 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:41:23 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:41:23 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:41:23 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:41:23 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:41:23 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:41:23 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:41:23 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:41:23 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:41:23 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:41:23 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:41:23 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:41:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:26 UTC] 📊 Step: complete
[24-Jul-2025 17:41:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:41:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:26 UTC] ✅ FOUND SUBMISSION: ID=178, file_url=assignment_28_student_3_1753378865.pdf, text_len=0
[24-Jul-2025 17:41:26 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:41:26 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:41:26 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:41:26 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:41:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:36 UTC] 📊 Step: start
[24-Jul-2025 17:41:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:41:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:36 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:40 UTC] 📊 Step: extract_text
[24-Jul-2025 17:41:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:41:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:40 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:41:40 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378892.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:41:40 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378892.pdf (Size: 30572 bytes)
[24-Jul-2025 17:41:40 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:41:40 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:41:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:43 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:41:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:41:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:43 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:47 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:41:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:41:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:47 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:47 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:41:47 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:41:51 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:51 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:51 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:51 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:51 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:51 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:41:51 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:41:51 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:51 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:41:51 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:41:51 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:41:51 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:41:51 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:41:51 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:41:51 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:41:51 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:41:51 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:41:51 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:41:51 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:41:51 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:41:51 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:41:55 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:41:55 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:41:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:41:55 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:41:55 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:41:55 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:41:55 UTC] 📊 Step: complete
[24-Jul-2025 17:41:55 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:41:55 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:41:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:41:56 UTC] ✅ FOUND SUBMISSION: ID=179, file_url=assignment_28_student_3_1753378892.pdf, text_len=0
[24-Jul-2025 17:41:56 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:41:56 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:41:56 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:41:56 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:42:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:09 UTC] 📊 Step: start
[24-Jul-2025 17:42:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:42:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:10 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:14 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:14 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:14 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:14 UTC] 📊 Step: extract_text
[24-Jul-2025 17:42:14 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:42:14 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:14 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378924.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:42:14 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378924.pdf (Size: 30572 bytes)
[24-Jul-2025 17:42:14 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:42:14 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:42:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:18 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:42:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:42:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:18 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:22 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:22 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:22 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:22 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:22 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:22 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:42:22 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:42:22 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:23 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:23 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:42:23 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:42:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:26 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:42:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:42:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:27 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:42:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:42:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:42:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:42:27 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:42:27 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:42:27 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:42:27 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:42:27 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:42:27 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:42:27 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:42:27 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:42:27 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:42:30 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:30 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:30 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:30 UTC] 📊 Step: complete
[24-Jul-2025 17:42:30 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:42:30 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:30 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 17:42:30 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:42:30 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:42:31 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:42:31 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:42:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:40 UTC] 📊 Step: start
[24-Jul-2025 17:42:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:42:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:40 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:42:44 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:44 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:44 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:44 UTC] 📊 Step: extract_text
[24-Jul-2025 17:42:44 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:42:44 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:45 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:42:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:42:45 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378957.pdf (Size: 30572 bytes)
[24-Jul-2025 17:42:45 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:42:45 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:42:48 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:48 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:48 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:48 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:48 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:48 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:42:48 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:42:48 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:48 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:42:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:53 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:42:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:42:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:53 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:42:53 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:42:53 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:42:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:42:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:42:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:42:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:42:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:42:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:42:56 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:42:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:42:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:42:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:42:56 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:42:56 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:42:56 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:42:56 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:42:56 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:42:56 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:42:56 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:42:56 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:42:56 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:42:56 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:42:56 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:42:56 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:42:56 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:43:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:00 UTC] 📊 Step: complete
[24-Jul-2025 17:43:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:43:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:00 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 17:43:01 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:43:01 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:01 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:01 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:43:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:09 UTC] 📊 Step: start
[24-Jul-2025 17:43:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:43:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:09 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:13 UTC] 📊 Step: extract_text
[24-Jul-2025 17:43:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:43:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:13 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:13 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:43:13 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378987.pdf (Size: 30572 bytes)
[24-Jul-2025 17:43:13 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:43:13 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:43:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:17 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:43:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:43:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:17 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:21 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:43:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:43:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:21 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:21 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:43:21 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:43:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:25 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:43:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:43:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:25 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:43:25 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:43:25 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:43:25 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:43:25 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:43:25 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:43:25 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:43:25 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:43:25 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:43:25 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:43:25 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:43:25 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:43:25 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:43:29 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:29 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:29 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:29 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:29 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:29 UTC] 📊 Step: complete
[24-Jul-2025 17:43:29 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:43:29 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:29 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 17:43:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:43:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:43:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:38 UTC] 📊 Step: start
[24-Jul-2025 17:43:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:43:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:39 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:42 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:42 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:42 UTC] 📊 Step: extract_text
[24-Jul-2025 17:43:42 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:43:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:42 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:43:42 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:43:42 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379015.pdf (Size: 30572 bytes)
[24-Jul-2025 17:43:42 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:43:42 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:43:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:47 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:43:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:43:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:47 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:51 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:51 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:51 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:51 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:51 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:51 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:43:51 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:43:51 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:51 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:51 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:43:51 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:43:55 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:55 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:55 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:55 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:55 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:55 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:43:55 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:43:55 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:55 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:43:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:43:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:43:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:43:55 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:43:55 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:43:55 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:43:55 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:43:55 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:43:55 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:43:55 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:43:55 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:43:55 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:43:59 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:43:59 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:43:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:43:59 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:43:59 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:43:59 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:43:59 UTC] 📊 Step: complete
[24-Jul-2025 17:43:59 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:43:59 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:43:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:43:59 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 17:43:59 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:43:59 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:59 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:43:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:44:08 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:08 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:08 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:08 UTC] 📊 Step: start
[24-Jul-2025 17:44:08 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:44:08 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:08 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:12 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:12 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:12 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:12 UTC] 📊 Step: extract_text
[24-Jul-2025 17:44:12 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:44:12 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:12 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:12 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:44:12 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379046.pdf (Size: 30572 bytes)
[24-Jul-2025 17:44:12 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:44:12 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:44:16 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:16 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:16 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:16 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:44:16 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:44:16 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:16 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:20 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:20 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:20 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:20 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:44:20 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:44:20 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:20 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:20 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:44:20 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:44:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:25 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:44:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:44:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:25 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:44:25 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:44:25 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:44:25 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:44:25 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:44:25 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:44:25 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:44:25 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:44:25 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:44:25 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:44:25 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:44:25 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:44:25 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:44:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:28 UTC] 📊 Step: complete
[24-Jul-2025 17:44:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:44:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:28 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 17:44:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:44:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:44:29 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:44:29 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:44:37 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:37 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:37 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:37 UTC] 📊 Step: start
[24-Jul-2025 17:44:37 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:44:37 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:37 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:41 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:41 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:41 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:41 UTC] 📊 Step: extract_text
[24-Jul-2025 17:44:41 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:44:41 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:41 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:44:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:44:41 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379075.pdf (Size: 30572 bytes)
[24-Jul-2025 17:44:41 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:44:41 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:44:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:46 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:44:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:44:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:46 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:49 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:44:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:44:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:49 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:49 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:44:49 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:44:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:54 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:44:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:44:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:55 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:44:55 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:44:55 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:44:55 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:44:55 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:44:55 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:44:55 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:44:55 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:44:55 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:44:55 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:44:55 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:44:55 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:44:55 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:44:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:44:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:44:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:44:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:44:58 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:44:58 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:44:58 UTC] 📊 Step: complete
[24-Jul-2025 17:44:58 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:44:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:44:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:44:58 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 17:44:58 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:44:58 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:44:58 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:44:59 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:45:10 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:10 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:10 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:10 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:10 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:10 UTC] 📊 Step: start
[24-Jul-2025 17:45:10 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:45:10 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:10 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:14 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:14 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:14 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:14 UTC] 📊 Step: extract_text
[24-Jul-2025 17:45:14 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:45:14 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:15 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:45:15 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379105.pdf (Size: 30572 bytes)
[24-Jul-2025 17:45:15 UTC] 📊 PDF extraction completed: 3716 characters
[24-Jul-2025 17:45:15 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Data Import Process:
I began by importing data from 
[24-Jul-2025 17:45:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:19 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:45:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:45:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:19 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:23 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:45:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:45:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:23 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:23 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 17:45:23 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:45:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:27 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:45:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:45:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:27 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:45:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:45:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:45:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:45:27 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 17:45:27 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:45:27 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:45:27 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:45:27 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 17:45:27 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 17:45:27 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:45:27 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 17:45:27 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:45:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:32 UTC] 📊 Step: complete
[24-Jul-2025 17:45:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:45:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:32 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 17:45:32 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:45:32 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:45:32 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:45:32 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:45:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:42 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:42 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:42 UTC] 📊 Step: start
[24-Jul-2025 17:45:42 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:45:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:43 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:45:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:47 UTC] 📊 Step: extract_text
[24-Jul-2025 17:45:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:45:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:47 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:45:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:45:47 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379139.pdf (Size: 30572 bytes)
[24-Jul-2025 17:45:47 UTC] 📊 PDF extraction completed: 3838 characters
[24-Jul-2025 17:45:47 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:45:51 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:51 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:51 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:51 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:51 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:51 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:45:51 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:45:51 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:51 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:45:55 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:55 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:55 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:55 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:55 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:55 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:45:55 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:45:55 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:55 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:45:55 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 17:45:55 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:45:59 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:45:59 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:45:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:45:59 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:45:59 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:45:59 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:45:59 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:45:59 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:45:59 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:45:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:45:59 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:45:59 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:45:59 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:45:59 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:45:59 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 17:45:59 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:45:59 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:45:59 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:45:59 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 17:45:59 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:45:59 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:45:59 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 17:45:59 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:46:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:06 UTC] 📊 Step: complete
[24-Jul-2025 17:46:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:46:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:06 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 17:46:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:46:06 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:46:06 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:46:06 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:46:15 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:15 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:15 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:15 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:15 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:15 UTC] 📊 Step: start
[24-Jul-2025 17:46:15 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:46:15 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:15 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:19 UTC] 📊 Step: extract_text
[24-Jul-2025 17:46:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:46:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:19 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:19 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:46:19 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379173.pdf (Size: 30572 bytes)
[24-Jul-2025 17:46:19 UTC] 📊 PDF extraction completed: 3838 characters
[24-Jul-2025 17:46:19 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:46:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:23 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:46:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:46:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:23 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:31 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:31 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:31 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:46:31 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:46:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:31 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:31 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 17:46:31 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:46:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:34 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:46:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:46:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:35 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:46:35 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:46:35 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:46:35 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:46:35 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 17:46:35 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:46:35 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:46:35 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:46:35 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 17:46:35 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:46:35 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:46:35 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 17:46:35 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:46:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:38 UTC] 📊 Step: complete
[24-Jul-2025 17:46:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:46:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:39 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 17:46:39 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:46:39 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:46:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:46:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:46:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:54 UTC] 📊 Step: start
[24-Jul-2025 17:46:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:46:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:54 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:46:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:46:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:46:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:46:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:46:58 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:46:58 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:46:58 UTC] 📊 Step: extract_text
[24-Jul-2025 17:46:58 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:46:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:46:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:46:58 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:46:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:46:58 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379211.pdf (Size: 30572 bytes)
[24-Jul-2025 17:46:58 UTC] 📊 PDF extraction completed: 3838 characters
[24-Jul-2025 17:46:58 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:47:12 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:12 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:12 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:12 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:47:12 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:47:12 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:13 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:47:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:17 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:47:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:47:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:17 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:47:17 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 17:47:17 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:47:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:21 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:47:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:47:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:21 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:47:21 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:47:21 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:47:21 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:47:21 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 17:47:21 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:47:21 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:47:21 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:47:21 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 17:47:21 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:47:21 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:47:21 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 17:47:21 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:47:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:25 UTC] 📊 Step: complete
[24-Jul-2025 17:47:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:47:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:25 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 17:47:25 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:47:26 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:47:26 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:47:26 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:47:35 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:35 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:35 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:35 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:35 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:35 UTC] 📊 Step: start
[24-Jul-2025 17:47:35 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:47:35 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:35 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 17:47:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:39 UTC] 📊 Step: extract_text
[24-Jul-2025 17:47:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:47:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:39 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:39 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:47:39 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379253.pdf (Size: 30572 bytes)
[24-Jul-2025 17:47:39 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:47:39 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:47:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:43 UTC] 📊 Step: start
[24-Jul-2025 17:47:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:47:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:43 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:47:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:46 UTC] 📊 Step: extract_text
[24-Jul-2025 17:47:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:47:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:46 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:47:46 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:47:46 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379260.pdf (Size: 30572 bytes)
[24-Jul-2025 17:47:46 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:47:46 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:47:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:49 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:47:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:47:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:49 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:47:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:53 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:47:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:47:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:53 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:47:53 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:47:53 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:47:53 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:47:53 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:47:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:47:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:47:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:47:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:47:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:47:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:47:56 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:47:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:47:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:47:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:47:56 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:47:56 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:47:56 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:47:56 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:47:56 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:47:56 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:47:56 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:47:56 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:47:56 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:47:56 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:47:56 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:47:56 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:47:56 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:48:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:00 UTC] 📊 Step: complete
[24-Jul-2025 17:48:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:48:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:00 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 17:48:00 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:48:00 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:48:00 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:48:00 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:48:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:09 UTC] 📊 Step: start
[24-Jul-2025 17:48:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:48:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:10 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:13 UTC] 📊 Step: extract_text
[24-Jul-2025 17:48:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:48:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:14 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:14 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:48:14 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379286.pdf (Size: 30572 bytes)
[24-Jul-2025 17:48:14 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:48:14 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:48:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:17 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:48:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:48:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:17 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:21 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:48:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:48:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:21 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:21 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:48:21 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:48:21 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:48:21 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:48:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:26 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:48:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:48:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:26 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:48:26 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:48:26 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:48:26 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:48:26 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:48:26 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:48:26 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:48:26 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:48:26 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:48:26 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:48:26 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:48:26 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:48:26 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:48:29 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:29 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:29 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:29 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:29 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:29 UTC] 📊 Step: complete
[24-Jul-2025 17:48:29 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:48:29 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:29 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 17:48:29 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:48:29 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:48:30 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:48:30 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:48:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:40 UTC] 📊 Step: start
[24-Jul-2025 17:48:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:48:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:40 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:48:45 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:45 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:45 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:45 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:45 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:45 UTC] 📊 Step: extract_text
[24-Jul-2025 17:48:45 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:48:45 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:45 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:48:45 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:48:45 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf (Size: 30572 bytes)
[24-Jul-2025 17:48:45 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:48:45 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:48:48 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:48 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:48 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:48 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:48 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:48 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:48:48 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:48:48 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:49 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:48:52 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:52 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:52 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:52 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:52 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:52 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:48:52 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:48:52 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:52 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:48:52 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:48:52 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:48:52 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:48:52 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:48:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:48:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:48:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:48:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:48:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:48:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:48:56 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:48:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:48:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:48:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:48:56 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:48:56 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:48:56 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:48:56 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:48:56 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:48:56 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:48:56 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:48:56 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:48:56 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:48:56 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:48:56 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:48:56 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:48:56 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:49:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:00 UTC] 📊 Step: complete
[24-Jul-2025 17:49:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:49:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:00 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 17:49:00 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:49:00 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:49:00 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:49:00 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:49:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:11 UTC] 📊 Step: start
[24-Jul-2025 17:49:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:49:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:11 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:15 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:15 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:15 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:15 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:15 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:15 UTC] 📊 Step: extract_text
[24-Jul-2025 17:49:15 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:49:15 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:15 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:15 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:49:15 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379348.pdf (Size: 30572 bytes)
[24-Jul-2025 17:49:15 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:49:15 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:49:20 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:20 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:20 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:20 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:49:20 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:49:20 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:20 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:23 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:49:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:49:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:23 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:23 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:49:23 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:49:23 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:49:23 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:49:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:27 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:49:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:49:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:27 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:49:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:49:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:49:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:49:27 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:49:27 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:49:27 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:49:27 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:49:27 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:49:27 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:49:27 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:49:27 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:49:27 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:49:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:32 UTC] 📊 Step: complete
[24-Jul-2025 17:49:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:49:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:34 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 17:49:34 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:49:34 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:49:34 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:49:35 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:49:44 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:44 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:44 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:44 UTC] 📊 Step: start
[24-Jul-2025 17:49:44 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:49:44 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:44 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:49:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:47 UTC] 📊 Step: extract_text
[24-Jul-2025 17:49:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:49:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:47 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:49:47 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:49:47 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379381.pdf (Size: 30572 bytes)
[24-Jul-2025 17:49:47 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:49:47 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:49:51 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:51 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:51 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:51 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:51 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:51 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:51 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:49:51 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:49:51 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:52 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:49:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:49:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:49:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:49:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:49:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:49:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:49:56 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:49:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:49:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:49:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:49:56 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:49:56 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:49:56 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:49:56 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:49:56 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:50:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:00 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:50:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:50:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:00 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:50:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:50:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:50:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:50:00 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:50:00 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:50:00 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:50:00 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:50:00 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:50:00 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:50:00 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:50:00 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:50:00 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:50:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:05 UTC] 📊 Step: complete
[24-Jul-2025 17:50:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:50:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:05 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 17:50:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:50:07 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:50:08 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:50:08 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:50:22 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:22 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:22 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:22 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:22 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:22 UTC] 📊 Step: start
[24-Jul-2025 17:50:22 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:50:22 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:23 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:26 UTC] 📊 Step: extract_text
[24-Jul-2025 17:50:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:50:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:26 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:50:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:50:26 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379417.pdf (Size: 30572 bytes)
[24-Jul-2025 17:50:26 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:50:26 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:50:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:31 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:31 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:31 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:50:31 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:50:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:31 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:34 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:50:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:50:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:34 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:34 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:50:34 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:50:34 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:50:34 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:50:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:39 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:50:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:50:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:39 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:50:39 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:50:39 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:50:39 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:50:39 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:50:39 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:50:39 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:50:39 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:50:39 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:50:39 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:50:39 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:50:39 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:50:39 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:50:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:43 UTC] 📊 Step: complete
[24-Jul-2025 17:50:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:50:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:44 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 17:50:44 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:50:44 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:50:44 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:50:45 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:50:55 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:50:55 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:50:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:50:55 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:50:55 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:50:55 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:50:55 UTC] 📊 Step: start
[24-Jul-2025 17:50:55 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:50:55 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:50:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:50:55 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:01 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:01 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:01 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:01 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:01 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:01 UTC] 📊 Step: extract_text
[24-Jul-2025 17:51:01 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:51:01 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:01 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:51:01 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379452.pdf (Size: 30572 bytes)
[24-Jul-2025 17:51:01 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:51:01 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:51:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:05 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:51:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:51:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:05 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:09 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:51:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:51:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:09 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:09 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:51:09 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:51:09 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:51:09 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:51:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:13 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:51:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:51:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:14 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:51:14 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:51:14 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:51:14 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:51:14 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:51:14 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:51:14 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:51:14 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:51:14 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:51:14 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:51:14 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:51:14 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:51:14 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:51:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:17 UTC] 📊 Step: complete
[24-Jul-2025 17:51:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:51:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:17 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 17:51:17 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:51:17 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:51:17 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:51:17 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:51:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:28 UTC] 📊 Step: start
[24-Jul-2025 17:51:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:51:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:28 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:32 UTC] 📊 Step: extract_text
[24-Jul-2025 17:51:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:51:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:33 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:51:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:51:33 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379485.pdf (Size: 30572 bytes)
[24-Jul-2025 17:51:33 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:51:33 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:51:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:36 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:51:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:51:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:36 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:40 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:51:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:51:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:40 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:40 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:51:40 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:51:40 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:51:40 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:51:44 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:44 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:44 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:44 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:51:44 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:51:44 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:44 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:51:44 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:51:44 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:51:44 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:51:44 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:51:44 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:51:44 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:51:44 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:51:44 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:51:44 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:51:44 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:51:44 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:51:44 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:51:48 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:48 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:48 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:48 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:48 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:48 UTC] 📊 Step: complete
[24-Jul-2025 17:51:48 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:51:48 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:48 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 17:51:48 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:51:49 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:51:49 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:51:49 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:51:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:51:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:51:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:51:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:51:58 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:51:58 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:51:58 UTC] 📊 Step: start
[24-Jul-2025 17:51:58 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:51:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:51:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:51:58 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:02 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:02 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:02 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:02 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:02 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:02 UTC] 📊 Step: extract_text
[24-Jul-2025 17:52:02 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:52:02 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:03 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:03 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:52:03 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379516.pdf (Size: 30572 bytes)
[24-Jul-2025 17:52:03 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:52:03 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:52:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:06 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:52:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:52:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:06 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:11 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:52:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:52:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:11 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:11 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:52:11 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:52:11 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:52:11 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:52:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:17 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:52:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:52:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:17 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:52:17 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:52:17 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:52:17 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:52:17 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:52:17 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:52:17 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:52:17 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:52:17 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:52:17 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:52:17 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:52:17 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:52:17 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:52:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:21 UTC] 📊 Step: complete
[24-Jul-2025 17:52:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:52:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:21 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 17:52:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:52:22 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:52:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:52:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:52:30 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:30 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:30 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:30 UTC] 📊 Step: start
[24-Jul-2025 17:52:30 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:52:30 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:30 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:34 UTC] 📊 Step: extract_text
[24-Jul-2025 17:52:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:52:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:34 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:52:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:52:34 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379548.pdf (Size: 30572 bytes)
[24-Jul-2025 17:52:34 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:52:34 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:52:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:38 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:52:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:52:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:38 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:42 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:42 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:52:42 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:52:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:43 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:43 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:52:43 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:52:43 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:52:43 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:52:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:52:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:52:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:47 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:52:47 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:52:47 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:52:47 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:52:47 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:52:47 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:52:47 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:52:47 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:52:47 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:52:47 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:52:47 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:52:47 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:52:47 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:52:50 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:52:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:52:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:52:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:52:50 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:52:50 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:52:50 UTC] 📊 Step: complete
[24-Jul-2025 17:52:50 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:52:50 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:52:51 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:52:51 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 17:52:51 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:52:51 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:52:51 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:52:52 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:53:03 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:03 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:03 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:03 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:03 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:03 UTC] 📊 Step: start
[24-Jul-2025 17:53:03 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:53:03 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:03 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:07 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:07 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:07 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:07 UTC] 📊 Step: extract_text
[24-Jul-2025 17:53:07 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:53:07 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:08 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:53:08 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:53:08 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379579.pdf (Size: 30572 bytes)
[24-Jul-2025 17:53:08 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:53:08 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:53:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:13 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:53:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:53:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:14 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:17 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:53:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:53:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:17 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:17 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:53:17 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:53:17 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:53:17 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:53:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:21 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:53:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:53:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:21 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:53:21 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:53:21 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:53:21 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:53:21 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:53:21 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:53:21 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:53:21 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:53:21 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:53:21 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:53:21 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:53:21 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:53:21 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:53:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:53:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:53:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:53:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:53:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:53:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:53:25 UTC] 📊 Step: complete
[24-Jul-2025 17:53:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:53:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:53:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:53:26 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 17:53:26 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:53:26 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:53:26 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:53:26 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:56:57 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:56:57 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:56:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:56:57 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:56:57 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:56:57 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:56:57 UTC] 📊 Step: start
[24-Jul-2025 17:56:57 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:56:57 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:56:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:56:57 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:00 UTC] 📊 Step: extract_text
[24-Jul-2025 17:57:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:57:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:01 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:57:01 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379814.pdf (Size: 30572 bytes)
[24-Jul-2025 17:57:01 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:57:01 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:57:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:05 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:57:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:57:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:06 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:09 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:57:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:57:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:09 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:09 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:57:09 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:57:09 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:57:09 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:57:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:13 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:57:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:57:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:13 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:57:13 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:57:13 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:57:13 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:57:13 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:57:13 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:57:13 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:57:13 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:57:13 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:57:13 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:57:13 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:57:13 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:57:13 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:57:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:18 UTC] 📊 Step: complete
[24-Jul-2025 17:57:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:57:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:18 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 17:57:18 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:57:18 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:57:18 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:57:18 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:57:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:32 UTC] 📊 Step: start
[24-Jul-2025 17:57:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:57:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:32 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:57:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:57:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:36 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:57:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:57:36 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379848.pdf (Size: 30572 bytes)
[24-Jul-2025 17:57:36 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:57:36 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:57:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:39 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:57:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:57:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:39 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:43 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:57:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:57:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:44 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:44 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:57:44 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:57:44 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:57:44 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:57:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:47 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:57:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:57:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:47 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:57:47 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:57:47 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:57:47 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:57:47 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:57:47 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:57:47 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:57:47 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:57:47 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:57:47 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:57:47 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:57:47 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:57:47 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:57:52 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:57:52 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:57:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:57:52 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:57:52 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:57:52 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:57:52 UTC] 📊 Step: complete
[24-Jul-2025 17:57:52 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:57:52 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:57:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:57:52 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 17:57:52 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:57:52 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:57:52 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:57:52 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:58:01 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:01 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:01 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:01 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:01 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:01 UTC] 📊 Step: start
[24-Jul-2025 17:58:01 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:58:01 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:01 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:06 UTC] 📊 Step: extract_text
[24-Jul-2025 17:58:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:58:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:06 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:58:06 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379879.pdf (Size: 30572 bytes)
[24-Jul-2025 17:58:06 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:58:06 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:58:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:09 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:58:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:58:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:09 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:13 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:58:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:58:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:13 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:13 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:58:13 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:58:13 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:58:13 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:58:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:18 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:58:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:58:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:18 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:58:18 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:58:18 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:58:18 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:58:18 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:58:18 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:58:18 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:58:18 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:58:18 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:58:18 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:58:18 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:58:18 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:58:18 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:58:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:21 UTC] 📊 Step: complete
[24-Jul-2025 17:58:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:58:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:21 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 17:58:22 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:58:22 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:58:22 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:58:22 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:58:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:31 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:31 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:31 UTC] 📊 Step: start
[24-Jul-2025 17:58:31 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:58:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:31 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:36 UTC] 📊 Step: extract_text
[24-Jul-2025 17:58:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:58:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:36 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:58:36 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:58:36 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379909.pdf (Size: 30572 bytes)
[24-Jul-2025 17:58:36 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:58:36 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:58:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:42 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:42 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:42 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:58:42 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:58:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:42 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:46 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:58:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:58:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:46 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:46 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:58:46 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:58:46 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:58:46 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:58:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:49 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:58:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:58:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:49 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:58:49 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:58:49 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:58:49 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:58:49 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:58:49 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:58:49 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:58:49 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:58:49 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:58:49 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:58:49 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:58:49 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:58:49 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:58:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:58:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:58:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:58:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:58:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:58:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:58:53 UTC] 📊 Step: complete
[24-Jul-2025 17:58:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:58:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:58:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:58:53 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 17:58:53 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:58:53 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:58:53 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:58:54 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:59:02 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:02 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:02 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:02 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:02 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:02 UTC] 📊 Step: start
[24-Jul-2025 17:59:02 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:59:02 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:02 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:07 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:07 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:07 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:07 UTC] 📊 Step: extract_text
[24-Jul-2025 17:59:07 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:59:07 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:07 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:07 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:59:07 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379940.pdf (Size: 30572 bytes)
[24-Jul-2025 17:59:07 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:59:07 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:59:10 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:10 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:10 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:10 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:10 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:10 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:59:10 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:59:10 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:11 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:14 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:14 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:14 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:14 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:59:14 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:59:14 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:14 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:14 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:59:14 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:59:14 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:59:14 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:59:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:18 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:59:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:59:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:19 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:59:19 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:59:19 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:59:19 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:59:19 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:59:19 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:59:19 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:59:19 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:59:19 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:59:19 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:59:19 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:59:19 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:59:19 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:59:22 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:22 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:22 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:22 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:22 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:22 UTC] 📊 Step: complete
[24-Jul-2025 17:59:22 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:59:22 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:22 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 17:59:23 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:59:23 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:59:23 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:59:23 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 17:59:33 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:33 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:33 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:33 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:33 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:33 UTC] 📊 Step: start
[24-Jul-2025 17:59:33 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 17:59:33 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:33 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:37 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:37 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:37 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:37 UTC] 📊 Step: extract_text
[24-Jul-2025 17:59:37 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 17:59:37 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:37 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 17:59:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: YES | Size: 30572
[24-Jul-2025 17:59:37 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379970.pdf (Size: 30572 bytes)
[24-Jul-2025 17:59:37 UTC] 📊 PDF extraction completed: 4491 characters
[24-Jul-2025 17:59:37 UTC] 📄 Content preview: PowerBI Assignment Analysis and Implementation

Memo / Model Answer Implementation

1. Importing and
[24-Jul-2025 17:59:41 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:41 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:41 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:41 UTC] 📊 Step: check_memorandum
[24-Jul-2025 17:59:41 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 17:59:41 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:41 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:45 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:45 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:45 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:45 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:45 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:45 UTC] 📊 Step: ai_analysis
[24-Jul-2025 17:59:45 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 17:59:45 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:45 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:45 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 17:59:45 UTC] 📄 Text source: database_stored
[24-Jul-2025 17:59:45 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 17:59:45 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 17:59:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:49 UTC] 📊 Step: generate_grade
[24-Jul-2025 17:59:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 17:59:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:49 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 17:59:49 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 17:59:49 UTC] DEBUG: studentText type: string
[24-Jul-2025 17:59:49 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 17:59:49 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 17:59:49 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 17:59:49 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 17:59:49 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 17:59:49 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 17:59:49 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 17:59:49 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 17:59:49 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 17:59:49 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 17:59:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 17:59:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 17:59:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 17:59:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 17:59:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 17:59:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 17:59:53 UTC] 📊 Step: complete
[24-Jul-2025 17:59:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 17:59:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 17:59:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 17:59:53 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 17:59:54 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 17:59:54 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:59:54 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 17:59:54 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:11:03 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:03 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:03 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:03 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:03 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:03 UTC] 📊 Step: start
[24-Jul-2025 18:11:03 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:11:03 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:03 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 18:11:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:06 UTC] 📊 Step: extract_text
[24-Jul-2025 18:11:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:11:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:06 UTC] ✅ FOUND SUBMISSION: ID=207, file_url=assignment_28_student_3_1753379970.pdf, text_len=0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:06 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379970.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:11:06 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379970.pdf (Size: 30572 bytes)
[24-Jul-2025 18:11:06 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379970.pdf
[24-Jul-2025 18:11:06 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:11:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:09 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:11:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:11:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:10 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:13 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:11:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:11:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:13 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:13 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:11:13 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:11:13 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:11:13 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:11:16 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:16 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:16 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:16 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:16 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:16 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:16 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:11:16 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:11:16 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:16 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:16 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:11:16 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:11:16 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:11:16 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:11:16 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:11:16 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:11:16 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:11:16 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:11:16 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:11:16 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:11:16 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:11:16 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:11:16 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:11:20 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:20 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:20 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:20 UTC] 📊 Step: complete
[24-Jul-2025 18:11:20 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:11:20 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:20 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:20 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:11:20 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:11:20 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:11:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:11:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:28 UTC] 📊 Step: start
[24-Jul-2025 18:11:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:11:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:28 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:34 UTC] 📊 Step: extract_text
[24-Jul-2025 18:11:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:11:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:34 UTC] ✅ FOUND SUBMISSION: ID=206, file_url=assignment_28_student_3_1753379940.pdf, text_len=0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:11:34 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379940.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:11:34 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379940.pdf (Size: 30572 bytes)
[24-Jul-2025 18:11:34 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379940.pdf
[24-Jul-2025 18:11:34 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:11:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:38 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:11:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:11:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:38 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:11:42 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:42 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:42 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:42 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:42 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:42 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:42 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:11:42 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:11:42 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:42 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:42 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:11:42 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:11:42 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:11:42 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:11:42 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:11:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:46 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:11:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:11:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:46 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:11:46 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:11:46 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:11:46 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:11:46 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:11:46 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:11:46 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:11:46 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:11:46 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:11:46 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:11:46 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:11:46 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:11:46 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:11:50 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:11:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:11:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:11:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:11:50 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:11:50 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:11:50 UTC] 📊 Step: complete
[24-Jul-2025 18:11:50 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:11:50 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:11:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:11:50 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:11:50 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:11:50 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:11:50 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:11:50 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:12:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:00 UTC] 📊 Step: start
[24-Jul-2025 18:12:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:12:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:00 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:12:04 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:04 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:04 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:04 UTC] 📊 Step: extract_text
[24-Jul-2025 18:12:04 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:12:04 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:05 UTC] ✅ FOUND SUBMISSION: ID=205, file_url=assignment_28_student_3_1753379909.pdf, text_len=0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:05 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379909.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:12:05 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379909.pdf (Size: 30572 bytes)
[24-Jul-2025 18:12:05 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379909.pdf
[24-Jul-2025 18:12:05 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:12:10 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:10 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:10 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:10 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:10 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:10 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:10 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:12:10 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:12:10 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:10 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:14 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:14 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:14 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:14 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:12:14 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:12:14 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:14 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:14 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:12:14 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:12:14 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:12:14 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:12:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:19 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:12:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:12:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:19 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:12:19 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:12:19 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:12:19 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:12:19 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:12:19 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:12:19 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:12:19 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:12:19 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:12:19 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:12:19 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:12:19 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:12:19 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:12:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:25 UTC] 📊 Step: complete
[24-Jul-2025 18:12:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:12:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:25 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:25 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:12:25 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:12:25 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:12:25 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:12:37 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:37 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:37 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:37 UTC] 📊 Step: start
[24-Jul-2025 18:12:37 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:12:37 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:37 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:40 UTC] 📊 Step: extract_text
[24-Jul-2025 18:12:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:12:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:41 UTC] ✅ FOUND SUBMISSION: ID=204, file_url=assignment_28_student_3_1753379879.pdf, text_len=0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:12:41 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379879.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:12:41 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379879.pdf (Size: 30572 bytes)
[24-Jul-2025 18:12:41 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379879.pdf
[24-Jul-2025 18:12:41 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:12:45 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:45 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:45 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:45 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:45 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:45 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:12:45 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:12:45 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:45 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:12:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:12:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:12:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:12:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:12:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:12:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:12:56 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:12:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:12:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:12:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:12:56 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:12:56 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:12:56 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:12:56 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:12:56 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:13:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:00 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:13:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:13:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:00 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:13:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:13:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:13:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:13:00 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:13:00 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:13:00 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:13:00 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:13:00 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:13:00 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:13:00 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:13:00 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:13:00 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:13:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:06 UTC] 📊 Step: complete
[24-Jul-2025 18:13:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:13:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:06 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:13:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:13:06 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:13:06 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:13:06 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:13:15 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:15 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:15 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:15 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:15 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:15 UTC] 📊 Step: start
[24-Jul-2025 18:13:15 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:13:15 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:15 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:13:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:21 UTC] 📊 Step: extract_text
[24-Jul-2025 18:13:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:13:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:21 UTC] ✅ FOUND SUBMISSION: ID=203, file_url=assignment_28_student_3_1753379848.pdf, text_len=0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:13:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379848.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:13:21 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379848.pdf (Size: 30572 bytes)
[24-Jul-2025 18:13:21 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379848.pdf
[24-Jul-2025 18:13:21 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:13:25 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:25 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:25 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:25 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:25 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:25 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:25 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:13:25 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:13:25 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:25 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:25 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:13:30 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:30 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:30 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:30 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:13:30 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:13:30 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:30 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:13:30 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:13:30 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:13:30 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:13:30 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:13:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:34 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:13:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:13:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:34 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:13:34 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:13:34 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:13:34 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:13:34 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:13:34 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:13:34 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:13:34 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:13:34 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:13:34 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:13:34 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:13:34 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:13:34 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:13:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:43 UTC] 📊 Step: complete
[24-Jul-2025 18:13:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:13:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:43 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:13:43 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:13:43 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:13:43 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:13:43 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:13:59 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:13:59 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:13:59 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:13:59 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:13:59 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:13:59 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:13:59 UTC] 📊 Step: start
[24-Jul-2025 18:13:59 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:13:59 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:13:59 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:13:59 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:14:02 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:02 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:02 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:02 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:02 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:02 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:02 UTC] 📊 Step: extract_text
[24-Jul-2025 18:14:02 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:14:02 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:02 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:02 UTC] ✅ FOUND SUBMISSION: ID=202, file_url=assignment_28_student_3_1753379814.pdf, text_len=0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:02 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379814.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:14:02 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379814.pdf (Size: 30572 bytes)
[24-Jul-2025 18:14:02 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379814.pdf
[24-Jul-2025 18:14:02 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:14:07 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:07 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:07 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:07 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:14:07 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:14:07 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:07 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:11 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:14:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:14:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:11 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:11 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:14:11 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:14:11 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:14:11 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:14:15 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:15 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:15 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:15 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:15 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:15 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:15 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:14:15 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:14:15 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:15 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:15 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:14:15 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:14:15 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:14:15 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:14:15 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:14:15 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:14:15 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:14:15 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:14:15 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:14:15 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:14:15 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:14:15 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:14:15 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:14:24 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:24 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:24 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:24 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:24 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:24 UTC] 📊 Step: complete
[24-Jul-2025 18:14:24 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:14:24 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:24 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:24 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:14:24 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:14:24 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:14:24 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:14:33 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:33 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:33 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:33 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:33 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:33 UTC] 📊 Step: start
[24-Jul-2025 18:14:33 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:14:33 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:34 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:37 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:37 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:37 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:37 UTC] 📊 Step: extract_text
[24-Jul-2025 18:14:37 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:14:37 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:37 UTC] ✅ FOUND SUBMISSION: ID=201, file_url=assignment_28_student_3_1753379579.pdf, text_len=0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:37 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379579.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:14:37 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379579.pdf (Size: 30572 bytes)
[24-Jul-2025 18:14:37 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379579.pdf
[24-Jul-2025 18:14:37 UTC] Live grading text extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:14:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:40 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:14:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:14:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:41 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 18:14:44 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:44 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:44 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:44 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:14:44 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:14:44 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:44 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:44 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 18:14:44 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:14:44 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:14:44 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:14:44 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:14:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:46 UTC] 📊 Step: start
[24-Jul-2025 18:14:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:14:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:46 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 18:14:50 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:50 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:50 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:50 UTC] 📊 Step: extract_text
[24-Jul-2025 18:14:50 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:14:50 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:50 UTC] ✅ FOUND SUBMISSION: ID=200, file_url=assignment_28_student_3_1753379548.pdf, text_len=0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:14:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379548.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:14:50 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379548.pdf (Size: 30572 bytes)
[24-Jul-2025 18:14:50 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379548.pdf
[24-Jul-2025 18:14:50 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:14:50 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:14:50 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:14:50 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:14:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:53 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:14:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:14:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:53 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:14:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:14:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:14:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:14:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:14:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:14:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:14:56 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:14:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:14:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:14:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:14:56 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:14:56 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:14:56 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:14:56 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:14:56 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:15:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:00 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:15:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:15:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:00 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:15:00 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:15:00 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:15:00 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:15:00 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:15:00 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:15:00 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:15:00 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:15:00 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:15:00 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:15:00 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:15:00 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:15:00 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:15:04 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:04 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:04 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:04 UTC] 📊 Step: complete
[24-Jul-2025 18:15:04 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:15:04 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:06 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:15:06 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:15:06 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:15:06 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:15:06 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:15:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:17 UTC] 📊 Step: start
[24-Jul-2025 18:15:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:15:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:17 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:15:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:21 UTC] 📊 Step: extract_text
[24-Jul-2025 18:15:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:15:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:21 UTC] ✅ FOUND SUBMISSION: ID=199, file_url=assignment_28_student_3_1753379516.pdf, text_len=0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:21 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379516.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:15:21 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379516.pdf (Size: 30572 bytes)
[24-Jul-2025 18:15:21 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379516.pdf
[24-Jul-2025 18:15:21 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:15:21 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:15:21 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:15:21 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:15:24 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:24 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:24 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:24 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:24 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:24 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:15:24 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:15:24 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:24 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:29 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:29 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:29 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:29 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:29 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:29 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:15:29 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:15:29 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:29 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:29 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:15:29 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:15:29 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:15:29 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:15:33 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:33 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:33 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:33 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:33 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:33 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:15:33 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:15:33 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:33 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:15:33 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:15:33 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:15:33 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:15:33 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:15:33 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:15:33 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:15:33 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:15:33 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:15:33 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:15:33 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:15:33 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:15:33 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:15:37 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:37 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:37 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:37 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:37 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:37 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:37 UTC] 📊 Step: complete
[24-Jul-2025 18:15:37 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:15:37 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:37 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:38 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:15:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:15:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:15:38 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:15:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:46 UTC] 📊 Step: start
[24-Jul-2025 18:15:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:15:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:46 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:54 UTC] 📊 Step: extract_text
[24-Jul-2025 18:15:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:15:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:54 UTC] ✅ FOUND SUBMISSION: ID=198, file_url=assignment_28_student_3_1753379485.pdf, text_len=0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:15:54 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379485.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:15:54 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379485.pdf (Size: 30572 bytes)
[24-Jul-2025 18:15:54 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379485.pdf
[24-Jul-2025 18:15:54 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:15:54 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:15:54 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:15:54 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:15:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:15:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:15:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:15:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:15:58 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:15:58 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:15:58 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:15:58 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:15:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:15:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:15:58 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:03 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:03 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:03 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:03 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:03 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:03 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:03 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:16:03 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:16:03 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:03 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:03 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:03 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:16:03 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:16:03 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:16:03 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:16:07 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:07 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:07 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:07 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:07 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:07 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:07 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:16:07 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:16:07 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:08 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:16:08 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:16:08 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:16:08 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:16:08 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:16:08 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:16:08 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:16:08 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:16:08 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:16:08 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:16:08 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:16:08 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:16:08 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:16:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:11 UTC] 📊 Step: complete
[24-Jul-2025 18:16:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:16:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:12 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:12 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:16:12 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:16:12 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:16:12 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:16:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:21 UTC] 📊 Step: start
[24-Jul-2025 18:16:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:16:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:21 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:26 UTC] 📊 Step: extract_text
[24-Jul-2025 18:16:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:16:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:26 UTC] ✅ FOUND SUBMISSION: ID=197, file_url=assignment_28_student_3_1753379452.pdf, text_len=0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:16:26 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379452.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:16:26 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379452.pdf (Size: 30572 bytes)
[24-Jul-2025 18:16:26 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379452.pdf
[24-Jul-2025 18:16:26 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:16:26 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:16:26 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:16:26 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:16:29 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:29 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:29 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:29 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:29 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:29 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:29 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:16:29 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:16:29 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:29 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:29 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:16:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:38 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:16:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:16:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:38 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:16:38 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:16:38 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:16:38 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:16:38 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:16:41 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:41 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:41 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:41 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:16:41 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:16:41 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:41 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:16:41 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:16:41 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:16:41 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:16:41 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:16:41 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:16:41 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:16:41 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:16:41 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:16:41 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:16:41 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:16:41 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:16:41 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:16:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:46 UTC] 📊 Step: complete
[24-Jul-2025 18:16:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:16:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:46 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:16:46 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:16:46 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:16:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:16:46 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:16:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:16:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:16:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:16:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:16:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:16:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:16:56 UTC] 📊 Step: start
[24-Jul-2025 18:16:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:16:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:16:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:16:56 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:17:01 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:01 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:01 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:01 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:01 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:01 UTC] 📊 Step: extract_text
[24-Jul-2025 18:17:01 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:17:01 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:01 UTC] ✅ FOUND SUBMISSION: ID=196, file_url=assignment_28_student_3_1753379417.pdf, text_len=0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:01 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379417.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:17:01 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379417.pdf (Size: 30572 bytes)
[24-Jul-2025 18:17:01 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379417.pdf
[24-Jul-2025 18:17:01 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:17:01 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:17:01 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:17:01 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:17:04 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:04 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:04 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:04 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:17:04 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:17:04 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:04 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:04 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:08 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:08 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:08 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:08 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:17:08 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:17:08 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:08 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:08 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:17:08 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:17:08 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:17:08 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:17:12 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:12 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:12 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:12 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:17:12 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:17:12 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:12 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:17:12 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:17:12 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:17:12 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:17:12 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:17:12 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:17:12 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:17:12 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:17:12 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:17:12 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:17:12 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:17:12 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:17:12 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:17:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:17 UTC] 📊 Step: complete
[24-Jul-2025 18:17:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:17:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:17 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:17 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:17:17 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:17:17 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:17:17 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:17:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:28 UTC] 📊 Step: start
[24-Jul-2025 18:17:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:17:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:28 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:32 UTC] 📊 Step: extract_text
[24-Jul-2025 18:17:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:17:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:32 UTC] ✅ FOUND SUBMISSION: ID=195, file_url=assignment_28_student_3_1753379381.pdf, text_len=0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:17:32 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379381.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:17:32 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379381.pdf (Size: 30572 bytes)
[24-Jul-2025 18:17:32 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379381.pdf
[24-Jul-2025 18:17:32 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:17:32 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:17:32 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:17:32 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:17:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:36 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:17:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:17:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:36 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:17:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:43 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:17:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:17:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:43 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:17:43 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:17:43 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:17:43 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:17:43 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:17:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:49 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:17:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:17:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:49 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:17:49 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:17:49 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:17:49 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:17:49 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:17:49 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:17:49 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:17:49 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:17:49 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:17:49 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:17:49 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:17:49 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:17:49 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:17:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:17:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:17:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:17:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:17:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:17:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:17:54 UTC] 📊 Step: complete
[24-Jul-2025 18:17:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:17:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:17:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:17:54 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:17:54 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:17:54 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:17:54 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:17:54 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:18:21 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:21 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:21 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:21 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:21 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:21 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:21 UTC] 📊 Step: start
[24-Jul-2025 18:18:21 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:18:21 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:21 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:21 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:18:24 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:24 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:24 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:24 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:24 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:24 UTC] 📊 Step: extract_text
[24-Jul-2025 18:18:24 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:18:24 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:24 UTC] ✅ FOUND SUBMISSION: ID=194, file_url=assignment_28_student_3_1753379348.pdf, text_len=0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379348.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:18:24 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379348.pdf (Size: 30572 bytes)
[24-Jul-2025 18:18:24 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379348.pdf
[24-Jul-2025 18:18:24 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:18:24 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:18:24 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 
[24-Jul-2025 18:18:24 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:18:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:28 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:18:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:18:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:28 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:32 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:18:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:18:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:32 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:32 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:18:32 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:18:32 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:18:32 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:18:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:39 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:18:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:18:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:39 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:18:39 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:18:39 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:18:39 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:18:39 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:18:39 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:18:39 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:18:39 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:18:39 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:18:39 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:18:39 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:18:39 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:18:39 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:18:45 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:45 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:45 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:45 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:45 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:45 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:45 UTC] 📊 Step: complete
[24-Jul-2025 18:18:45 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:18:45 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:45 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:45 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:18:45 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:18:46 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:18:46 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:18:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:54 UTC] 📊 Step: start
[24-Jul-2025 18:18:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:18:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:54 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:54 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:58 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:18:58 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:18:58 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:18:58 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:18:58 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:18:58 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:18:58 UTC] 📊 Step: extract_text
[24-Jul-2025 18:18:58 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:18:58 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:18:58 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:18:58 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:18:58 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:18:58 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf (Size: 30572 bytes)
[24-Jul-2025 18:18:58 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:18:58 UTC] ⚠️ Intelligent analysis failed: No memorandum found for assignment 28
[24-Jul-2025 18:18:58 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf
[24-Jul-2025 18:18:58 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:18:58 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:18:58 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 28
[24-Jul-2025 18:18:58 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:19:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:19:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:19:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:19:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:19:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:19:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:19:06 UTC] 📊 Step: start
[24-Jul-2025 18:19:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:19:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:19:06 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:19:06 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:19:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:19:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:19:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:19:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:19:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:19:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:19:09 UTC] 📊 Step: extract_text
[24-Jul-2025 18:19:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:19:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:19:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:19:09 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:19:09 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:19:09 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf (Size: 30572 bytes)
[24-Jul-2025 18:19:09 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:19:09 UTC] ⚠️ Intelligent analysis failed: No memorandum found for assignment 28
[24-Jul-2025 18:19:09 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf
[24-Jul-2025 18:19:09 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:19:09 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:19:09 UTC] ❌ Intelligent analyzer also failed: No memorandum found for assignment 28
[24-Jul-2025 18:19:09 UTC] ⚠️ Real extraction failed, creating intelligent fallback
[24-Jul-2025 18:21:50 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:21:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:21:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:21:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:21:50 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:21:50 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:21:50 UTC] 📊 Step: start
[24-Jul-2025 18:21:50 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:21:50 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:21:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:21:50 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:21:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:21:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:21:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:21:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:21:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:21:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:21:53 UTC] 📊 Step: extract_text
[24-Jul-2025 18:21:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:21:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:21:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:21:53 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:21:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:21:53 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf (Size: 30572 bytes)
[24-Jul-2025 18:21:53 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:21:53 UTC] ⚠️ Intelligent analysis failed: Database connection is null in IntelligentPDFAnalyzer
[24-Jul-2025 18:21:53 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf
[24-Jul-2025 18:21:53 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:21:53 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:21:53 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:21:53 UTC] ❌ Intelligent analyzer also failed: Database connection is null in IntelligentPDFAnalyzer
[24-Jul-2025 18:21:53 UTC] 🔧 Final intelligent analysis attempt with assignment_id: 28
[24-Jul-2025 18:21:53 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:24:13 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:13 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:13 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:13 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:13 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:13 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:13 UTC] 📊 Step: start
[24-Jul-2025 18:24:13 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:24:13 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:13 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:13 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:24:17 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:17 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:17 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:17 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:17 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:17 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:17 UTC] 📊 Step: extract_text
[24-Jul-2025 18:24:17 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:24:17 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:17 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:17 UTC] ✅ FOUND SUBMISSION: ID=193, file_url=assignment_28_student_3_1753379317.pdf, text_len=0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:17 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:24:17 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf (Size: 30572 bytes)
[24-Jul-2025 18:24:17 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:24:17 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379317.pdf
[24-Jul-2025 18:24:17 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:24:17 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:24:17 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:24:17 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:24:17 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:24:17 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:24:20 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:20 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:20 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:20 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:20 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:20 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:20 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:24:20 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:24:20 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:20 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:20 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:23 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:24:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:24:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:24 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:24 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:24:24 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:24:24 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:24:24 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:24:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:27 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:24:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:24:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:27 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:24:27 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:24:27 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:24:27 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:24:27 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:24:27 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:24:27 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:24:27 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:24:27 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:24:27 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:24:27 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:24:27 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:24:27 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:24:30 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:30 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:30 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:30 UTC] 📊 Step: complete
[24-Jul-2025 18:24:30 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:24:30 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:30 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:30 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:24:30 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:24:30 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:24:30 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:24:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:39 UTC] 📊 Step: start
[24-Jul-2025 18:24:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:24:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:39 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:43 UTC] 📊 Step: extract_text
[24-Jul-2025 18:24:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:24:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:43 UTC] ✅ FOUND SUBMISSION: ID=192, file_url=assignment_28_student_3_1753379286.pdf, text_len=0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:24:43 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379286.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:24:43 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379286.pdf (Size: 30572 bytes)
[24-Jul-2025 18:24:43 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:24:43 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379286.pdf
[24-Jul-2025 18:24:43 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:24:43 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:24:43 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:24:43 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:24:43 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:24:43 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:24:47 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:47 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:47 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:47 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:47 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:47 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:47 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:24:47 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:24:47 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:47 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:47 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:24:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:53 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:24:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:24:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:53 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:24:53 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:24:53 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:24:53 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:24:53 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:24:57 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:24:57 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:24:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:24:57 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:24:57 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:24:57 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:24:57 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:24:57 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:24:57 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:24:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:24:57 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:24:57 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:24:57 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:24:57 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:24:57 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:24:57 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:24:57 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:24:57 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:24:57 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:24:57 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:24:57 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:24:57 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:24:57 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:25:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:00 UTC] 📊 Step: complete
[24-Jul-2025 18:25:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:25:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:00 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:25:00 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:25:00 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:25:00 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:25:00 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:25:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:11 UTC] 📊 Step: start
[24-Jul-2025 18:25:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:25:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:11 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:25:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:18 UTC] 📊 Step: extract_text
[24-Jul-2025 18:25:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:25:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:18 UTC] ✅ FOUND SUBMISSION: ID=191, file_url=assignment_28_student_3_1753379260.pdf, text_len=0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:18 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379260.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:25:18 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379260.pdf (Size: 30572 bytes)
[24-Jul-2025 18:25:18 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:25:18 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379260.pdf
[24-Jul-2025 18:25:18 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:25:18 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:25:18 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:25:18 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:25:18 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:25:18 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:25:22 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:22 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:22 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:22 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:22 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:22 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:22 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:25:22 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:25:22 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:22 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:22 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:26 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:25:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:25:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:26 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:26 UTC] 🤖 AI will analyze text of length: 4491
[24-Jul-2025 18:25:26 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:25:26 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:25:26 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:25:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:32 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:25:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:25:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:32 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Full text length: 4491
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:25:32 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:25:32 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:25:32 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:25:32 UTC] DEBUG: studentText length: 4491
[24-Jul-2025 18:25:32 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:25:32 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:25:32 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:25:32 UTC] DEBUG: Similarity: 12.530120481928
[24-Jul-2025 18:25:32 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:25:32 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:25:32 UTC] DEBUG: Final Grade: 29.52
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: AI Score: 29.52
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Similarity Score: 12.53
[24-Jul-2025 18:25:32 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:25:35 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:35 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:35 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:35 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:35 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:35 UTC] 📊 Step: complete
[24-Jul-2025 18:25:35 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:25:35 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:35 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:35 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:25:36 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:25:36 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:25:36 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:25:46 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:46 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:46 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:46 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:46 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:46 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:46 UTC] 📊 Step: start
[24-Jul-2025 18:25:46 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:25:46 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:46 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:46 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:50 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:50 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:50 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:50 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:50 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:50 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:50 UTC] 📊 Step: extract_text
[24-Jul-2025 18:25:50 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:25:50 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:50 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:50 UTC] ✅ FOUND SUBMISSION: ID=190, file_url=assignment_28_student_3_1753379253.pdf, text_len=0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:25:50 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379253.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:25:50 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379253.pdf (Size: 30572 bytes)
[24-Jul-2025 18:25:50 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:25:50 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379253.pdf
[24-Jul-2025 18:25:50 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:25:50 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:25:50 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:25:50 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:25:50 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:25:50 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:25:55 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:25:55 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:25:55 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:25:55 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:25:55 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:25:55 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:25:55 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:25:55 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:25:55 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:25:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:25:55 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:00 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:26:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:26:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:00 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:00 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 18:26:00 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:26:00 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:26:00 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:26:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:05 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:26:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:26:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:05 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:26:05 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:26:05 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:26:05 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:26:05 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 18:26:05 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:26:05 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:26:05 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:26:05 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 18:26:05 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:26:05 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:26:05 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 18:26:05 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:26:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:09 UTC] 📊 Step: complete
[24-Jul-2025 18:26:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:26:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:09 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:09 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:09 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:26:09 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:26:09 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:26:09 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:26:18 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:18 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:18 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:18 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:18 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:18 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:18 UTC] 📊 Step: start
[24-Jul-2025 18:26:18 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:26:18 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:18 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:18 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:23 UTC] 📊 Step: extract_text
[24-Jul-2025 18:26:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:26:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:23 UTC] ✅ FOUND SUBMISSION: ID=189, file_url=assignment_28_student_3_1753379211.pdf, text_len=0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379211.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:26:23 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379211.pdf (Size: 30572 bytes)
[24-Jul-2025 18:26:23 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:26:23 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379211.pdf
[24-Jul-2025 18:26:23 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:26:23 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:26:23 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:26:23 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:26:23 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:26:23 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:26:26 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:26 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:26 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:26 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:26 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:26 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:26 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:26:26 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:26:26 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:26 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:26 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:30 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:30 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:30 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:30 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:30 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:30 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:30 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:26:30 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:26:30 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:30 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:30 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:30 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 18:26:30 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:26:30 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:26:30 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:26:34 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:34 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:34 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:34 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:34 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:34 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:34 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:26:34 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:26:34 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:34 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:34 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:26:34 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:26:34 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:26:34 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:26:34 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 18:26:34 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:26:34 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:26:34 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:26:34 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 18:26:34 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:26:34 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:26:34 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 18:26:34 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:26:38 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:38 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:38 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:38 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:38 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:38 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:38 UTC] 📊 Step: complete
[24-Jul-2025 18:26:38 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:26:38 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:38 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:38 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:38 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:26:38 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:26:38 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:26:39 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:26:48 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:48 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:48 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:48 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:48 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:48 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:48 UTC] 📊 Step: start
[24-Jul-2025 18:26:48 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:26:48 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:48 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:48 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:52 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:52 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:52 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:52 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:52 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:52 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:52 UTC] 📊 Step: extract_text
[24-Jul-2025 18:26:52 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:26:52 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:52 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:52 UTC] ✅ FOUND SUBMISSION: ID=188, file_url=assignment_28_student_3_1753379173.pdf, text_len=0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:26:52 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379173.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:26:52 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379173.pdf (Size: 30572 bytes)
[24-Jul-2025 18:26:52 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:26:52 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379173.pdf
[24-Jul-2025 18:26:52 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:26:52 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:26:52 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:26:52 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:26:52 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:26:52 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:26:57 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:26:57 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:26:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:26:57 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:26:57 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:26:57 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:26:57 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:26:57 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:26:57 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:26:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:26:57 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:00 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:27:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:27:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:00 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:00 UTC] 🤖 AI will analyze text of length: 3838
[24-Jul-2025 18:27:00 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:27:00 UTC] 📈 Enhanced similarity: base=28.571428571429, boosted=51.428571428571, final=51.43
[24-Jul-2025 18:27:00 UTC] 🔑 Enhanced keywords: matches=39, total=88, base=44.318181818182, final=70.91
[24-Jul-2025 18:27:06 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:06 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:06 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:06 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:06 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:06 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:06 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:27:06 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:27:06 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:07 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:07 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Full text length: 3838
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:27:07 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:27:07 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:27:07 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:27:07 UTC] DEBUG: studentText length: 3838
[24-Jul-2025 18:27:07 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:27:07 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:27:07 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:27:07 UTC] DEBUG: Similarity: 12.644376899696
[24-Jul-2025 18:27:07 UTC] DEBUG: Keyword Coverage: 27.777777777778
[24-Jul-2025 18:27:07 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:27:07 UTC] DEBUG: Final Grade: 29.56
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: AI Score: 29.56
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Similarity Score: 12.64
[24-Jul-2025 18:27:07 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:27:11 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:11 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:11 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:11 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:11 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:11 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:11 UTC] 📊 Step: complete
[24-Jul-2025 18:27:11 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:27:11 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:11 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:11 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:11 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:27:11 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:27:11 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:27:11 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:27:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:19 UTC] 📊 Step: start
[24-Jul-2025 18:27:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:27:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:19 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:23 UTC] 📊 Step: extract_text
[24-Jul-2025 18:27:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:27:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:23 UTC] ✅ FOUND SUBMISSION: ID=187, file_url=assignment_28_student_3_1753379139.pdf, text_len=0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:23 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379139.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:27:23 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379139.pdf (Size: 30572 bytes)
[24-Jul-2025 18:27:23 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:27:23 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379139.pdf
[24-Jul-2025 18:27:23 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:27:23 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:27:23 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:27:23 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:27:23 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:27:23 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:27:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:27 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:27:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:27:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:27 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:31 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:31 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:31 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:27:31 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:27:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:31 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:31 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:27:31 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:27:31 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:27:31 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:27:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:36 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:27:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:27:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:36 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:27:36 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:27:36 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:27:36 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:27:36 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:27:36 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:27:36 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:27:36 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:27:36 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:27:36 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:27:36 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:27:36 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:27:36 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:27:40 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:40 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:40 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:40 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:40 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:40 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:40 UTC] 📊 Step: complete
[24-Jul-2025 18:27:40 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:27:40 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:40 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:40 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:40 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:27:40 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:27:40 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:27:40 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:27:49 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:49 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:49 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:49 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:49 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:49 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:49 UTC] 📊 Step: start
[24-Jul-2025 18:27:49 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:27:49 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:49 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:50 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:53 UTC] 📊 Step: extract_text
[24-Jul-2025 18:27:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:27:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:53 UTC] ✅ FOUND SUBMISSION: ID=186, file_url=assignment_28_student_3_1753379105.pdf, text_len=0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:27:53 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379105.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:27:53 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379105.pdf (Size: 30572 bytes)
[24-Jul-2025 18:27:53 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:27:53 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379105.pdf
[24-Jul-2025 18:27:53 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:27:53 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:27:53 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:27:53 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:27:53 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:27:53 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:27:57 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:27:57 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:27:57 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:27:57 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:27:57 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:27:57 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:27:57 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:27:57 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:27:57 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:27:57 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:27:57 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:01 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:01 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:01 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:01 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:01 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:01 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:01 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:28:01 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:28:01 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:01 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:01 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:01 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:28:01 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:28:01 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:28:01 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:28:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:05 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:28:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:28:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:05 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:28:05 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:28:05 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:28:05 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:28:05 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:28:05 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:28:05 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:28:05 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:28:05 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:28:05 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:28:05 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:28:05 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:28:05 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:28:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:09 UTC] 📊 Step: complete
[24-Jul-2025 18:28:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:28:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:10 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:10 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:28:10 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:28:10 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:28:10 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:28:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:19 UTC] 📊 Step: start
[24-Jul-2025 18:28:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:28:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:19 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:24 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:24 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:24 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:24 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:24 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:24 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:24 UTC] 📊 Step: extract_text
[24-Jul-2025 18:28:24 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:28:24 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:24 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:24 UTC] ✅ FOUND SUBMISSION: ID=185, file_url=assignment_28_student_3_1753379075.pdf, text_len=0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:24 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379075.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:28:24 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379075.pdf (Size: 30572 bytes)
[24-Jul-2025 18:28:24 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:28:24 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379075.pdf
[24-Jul-2025 18:28:24 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:28:24 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:28:24 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:28:24 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:28:24 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:28:24 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:28:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:27 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:28:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:28:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:27 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:31 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:31 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:31 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:31 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:31 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:31 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:31 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:28:31 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:28:31 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:31 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:31 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:31 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:28:31 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:28:31 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:28:31 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:28:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:36 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:28:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:28:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:36 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:28:36 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:28:36 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:28:36 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:28:36 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:28:36 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:28:36 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:28:36 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:28:36 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:28:36 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:28:36 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:28:36 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:28:36 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:28:41 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:41 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:41 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:41 UTC] 📊 Step: complete
[24-Jul-2025 18:28:41 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:28:41 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:41 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:41 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:28:41 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:28:41 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:28:41 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:28:53 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:53 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:53 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:53 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:53 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:53 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:53 UTC] 📊 Step: start
[24-Jul-2025 18:28:53 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:28:53 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:53 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:53 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:56 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:28:56 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:28:56 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:28:56 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:28:56 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:28:56 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:28:56 UTC] 📊 Step: extract_text
[24-Jul-2025 18:28:56 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:28:56 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:28:56 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:28:56 UTC] ✅ FOUND SUBMISSION: ID=184, file_url=assignment_28_student_3_1753379046.pdf, text_len=0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:28:56 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379046.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:28:56 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379046.pdf (Size: 30572 bytes)
[24-Jul-2025 18:28:56 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:28:56 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379046.pdf
[24-Jul-2025 18:28:56 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:28:56 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:28:56 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:28:56 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:28:56 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:28:56 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:29:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:00 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:29:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:29:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:00 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:04 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:04 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:04 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:04 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:04 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:04 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:04 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:29:04 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:29:04 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:05 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:05 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:29:05 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:29:05 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:29:05 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:29:08 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:08 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:08 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:08 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:08 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:08 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:08 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:29:08 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:29:08 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:08 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:08 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:29:08 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:29:08 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:29:08 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:29:08 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:29:08 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:29:08 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:29:08 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:29:08 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:29:08 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:29:08 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:29:08 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:29:08 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:29:12 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:12 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:12 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:12 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:12 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:12 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:12 UTC] 📊 Step: complete
[24-Jul-2025 18:29:12 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:29:12 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:12 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:12 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:12 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:29:12 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:29:12 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:29:12 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:29:23 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:23 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:23 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:23 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:23 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:23 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:23 UTC] 📊 Step: start
[24-Jul-2025 18:29:23 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:29:23 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:23 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:23 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:27 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:27 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:27 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:27 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:27 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:27 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:27 UTC] 📊 Step: extract_text
[24-Jul-2025 18:29:27 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:29:27 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:27 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:27 UTC] ✅ FOUND SUBMISSION: ID=183, file_url=assignment_28_student_3_1753379015.pdf, text_len=0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:29:27 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379015.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:29:27 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379015.pdf (Size: 30572 bytes)
[24-Jul-2025 18:29:27 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:29:27 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753379015.pdf
[24-Jul-2025 18:29:27 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:29:27 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:29:27 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:29:27 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:29:27 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:29:27 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:29:32 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:32 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:32 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:32 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:32 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:32 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:32 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:29:32 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:29:32 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:32 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:32 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:29:35 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:35 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:35 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:35 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:35 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:35 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:35 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:29:35 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:29:35 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:35 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:35 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:29:35 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:29:35 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:29:35 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:29:35 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:29:39 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:39 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:39 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:39 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:39 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:39 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:39 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:29:39 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:29:39 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:39 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:40 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:29:40 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:29:40 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:29:40 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:29:40 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:29:40 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:29:40 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:29:40 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:29:40 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:29:40 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:29:40 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:29:40 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:29:40 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:29:43 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:43 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:43 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:43 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:43 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:43 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:43 UTC] 📊 Step: complete
[24-Jul-2025 18:29:43 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:29:43 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:43 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:43 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:29:44 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:29:44 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:29:44 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:29:44 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:29:54 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:29:54 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:29:54 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:29:54 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:29:54 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:29:54 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:29:54 UTC] 📊 Step: start
[24-Jul-2025 18:29:54 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:29:54 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:29:55 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:29:55 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:30:00 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:00 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:00 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:00 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:00 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:00 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:00 UTC] 📊 Step: extract_text
[24-Jul-2025 18:30:00 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:30:00 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:00 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:00 UTC] ✅ FOUND SUBMISSION: ID=182, file_url=assignment_28_student_3_1753378987.pdf, text_len=0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:00 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378987.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:30:00 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378987.pdf (Size: 30572 bytes)
[24-Jul-2025 18:30:00 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:30:00 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378987.pdf
[24-Jul-2025 18:30:00 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:30:00 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:30:00 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:30:00 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:30:00 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:30:00 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:30:05 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:05 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:05 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:05 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:05 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:05 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:05 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:30:05 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:30:05 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:05 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:05 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:09 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:09 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:09 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:09 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:09 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:09 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:09 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:30:09 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:30:09 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:10 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:10 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:10 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:30:10 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:30:10 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:30:10 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:30:14 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:14 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:14 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:14 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:14 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:14 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:14 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:30:14 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:30:14 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:14 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:14 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:30:14 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:30:14 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:30:14 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:30:14 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:30:14 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:30:14 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:30:14 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:30:14 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:30:14 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:30:14 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:30:14 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:30:14 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 18:30:19 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:19 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:19 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:19 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:19 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:19 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:19 UTC] 📊 Step: complete
[24-Jul-2025 18:30:19 UTC] 📊 All POST data: {"assignment_id":"28","step":"complete"}
[24-Jul-2025 18:30:19 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:19 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:19 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:19 UTC] Prepare failed for total videos query: Unknown column 'v.status' in 'where clause'
[24-Jul-2025 18:30:19 UTC] Prepare failed for total assignments query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:30:19 UTC] Prepare failed for total quizzes query: Unknown column 'status' in 'where clause'
[24-Jul-2025 18:30:20 UTC] Prepare failed for enrollment progress update: Unknown column 'updated_at' in 'field list'
[24-Jul-2025 18:30:28 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:28 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:28 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:28 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:28 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:28 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:28 UTC] 📊 Step: start
[24-Jul-2025 18:30:28 UTC] 📊 All POST data: {"assignment_id":"28","step":"start"}
[24-Jul-2025 18:30:28 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:28 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:28 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:33 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:33 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:33 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:33 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:33 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:33 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:33 UTC] 📊 Step: extract_text
[24-Jul-2025 18:30:33 UTC] 📊 All POST data: {"assignment_id":"28","step":"extract_text"}
[24-Jul-2025 18:30:33 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:33 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:33 UTC] ✅ FOUND SUBMISSION: ID=181, file_url=assignment_28_student_3_1753378957.pdf, text_len=0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: NO | Size: 0
[24-Jul-2025 18:30:33 UTC] 📁 Path attempt: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378957.pdf | Exists: YES | Size: 30572
[24-Jul-2025 18:30:33 UTC] ✅ FOUND FILE: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378957.pdf (Size: 30572 bytes)
[24-Jul-2025 18:30:33 UTC] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 18:30:33 UTC] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753378957.pdf
[24-Jul-2025 18:30:33 UTC] ⚠️ Initial PDF extraction failed: Unable to extract meaningful text from PDF
[24-Jul-2025 18:30:33 UTC] 🔧 Attempting intelligent analysis with assignment_id: 28
[24-Jul-2025 18:30:33 UTC] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 18:30:33 UTC] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 18:30:33 UTC] 📄 Memorandum length: 1735 chars
[24-Jul-2025 18:30:33 UTC] ✅ Intelligent analyzer success: 1688 chars
[24-Jul-2025 18:30:36 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:36 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:36 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:36 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:36 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:36 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:36 UTC] 📊 Step: check_memorandum
[24-Jul-2025 18:30:36 UTC] 📊 All POST data: {"assignment_id":"28","step":"check_memorandum"}
[24-Jul-2025 18:30:36 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:36 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:36 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 18:30:41 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:41 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:41 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:41 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:41 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:41 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:41 UTC] 📊 Step: ai_analysis
[24-Jul-2025 18:30:41 UTC] 📊 All POST data: {"assignment_id":"28","step":"ai_analysis"}
[24-Jul-2025 18:30:41 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:41 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:41 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 18:30:41 UTC] 🤖 AI will analyze text of length: 3716
[24-Jul-2025 18:30:41 UTC] 📄 Text source: database_stored
[24-Jul-2025 18:30:41 UTC] 📈 Enhanced similarity: base=28.07881773399, boosted=50.541871921182, final=50.54
[24-Jul-2025 18:30:41 UTC] 🔑 Enhanced keywords: matches=40, total=88, base=45.454545454545, final=72.73
[24-Jul-2025 18:30:44 UTC] 🔧 AUTO-DETECTED: Set session to use student_id=3
[24-Jul-2025 18:30:44 UTC] 👤 Using student_id: 3
[24-Jul-2025 18:30:44 UTC] === LIVE AI GRADING CALLED ===
[24-Jul-2025 18:30:44 UTC] 📊 Session user_id: 3
[24-Jul-2025 18:30:44 UTC] 📊 POST assignment_id: 28
[24-Jul-2025 18:30:44 UTC] 📊 Parsed assignment_id: 28
[24-Jul-2025 18:30:44 UTC] 📊 Step: generate_grade
[24-Jul-2025 18:30:44 UTC] 📊 All POST data: {"assignment_id":"28","step":"generate_grade"}
[24-Jul-2025 18:30:44 UTC] 📊 Session data: {"user_id":"3","student_id":"3","user_type":"student"}
[24-Jul-2025 18:30:45 UTC] 🗑️ LIVE AI GRADING: Looking for assignment_id=28, student_id=3
[24-Jul-2025 18:30:45 UTC] ✅ FOUND SUBMISSION: ID=180, file_url=assignment_28_student_3_1753378924.pdf, text_len=0
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Starting AI grading process
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Full text length: 3716
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Memorandum length: 1735
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Assignment ID: 28
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: AIGradingService class exists
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: AIGradingService instantiated successfully
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: About to call gradeAssignment method
[24-Jul-2025 18:30:45 UTC] DEBUG: gradeAssignment called
[24-Jul-2025 18:30:45 UTC] DEBUG: studentText type: string
[24-Jul-2025 18:30:45 UTC] DEBUG: memorandumData type: string
[24-Jul-2025 18:30:45 UTC] DEBUG: studentText length: 3716
[24-Jul-2025 18:30:45 UTC] DEBUG: memorandumData length: 1735
[24-Jul-2025 18:30:45 UTC] DEBUG: Extracted memorandum length: 1735
[24-Jul-2025 18:30:45 UTC] DEBUG: Memorandum preview: 1. Data visualization and business intelligence 2. Power BI Desktop, Service, and Mobile 3. Desktop app to create reports and data models 4. One-page view of multiple visuals 5. A collection of relate
[24-Jul-2025 18:30:45 UTC] DEBUG: Similarity: 12.966360856269
[24-Jul-2025 18:30:45 UTC] DEBUG: Keyword Coverage: 28.472222222222
[24-Jul-2025 18:30:45 UTC] DEBUG: Quality Score: 80
[24-Jul-2025 18:30:45 UTC] DEBUG: Final Grade: 29.88
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: gradeAssignment completed successfully
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: AI Score: 29.88
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Similarity Score: 12.97
[24-Jul-2025 18:30:45 UTC] GRADING DEBUG: Quality Score: 80
[24-Jul-2025 20:31:00 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:31:00 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753381854.pdf
[24-Jul-2025 20:31:00 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:31:00 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:31:00 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:31:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:283
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 283
[24-Jul-2025 20:33:42 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:33:42 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382015.pdf
[24-Jul-2025 20:33:42 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:33:42 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:33:42 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:33:52 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:301
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 301
[24-Jul-2025 20:37:31 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:37:31 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382246.pdf
[24-Jul-2025 20:37:31 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:37:31 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:37:31 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:37:41 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:301
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 301
[24-Jul-2025 20:39:59 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:39:59 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382392.pdf
[24-Jul-2025 20:39:59 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:39:59 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:39:59 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:40:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:301
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 301
[24-Jul-2025 20:40:42 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:40:42 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382436.pdf
[24-Jul-2025 20:40:42 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:40:42 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:40:42 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:40:52 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:249
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 249
[24-Jul-2025 20:43:53 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:43:53 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382628.pdf
[24-Jul-2025 20:43:53 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:43:53 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:43:53 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:44:18 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:44:18 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382652.pdf
[24-Jul-2025 20:44:18 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:44:18 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:44:18 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:44:45 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:44:45 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382677.pdf
[24-Jul-2025 20:44:45 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:44:45 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:44:45 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:45:16 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:45:16 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382709.pdf
[24-Jul-2025 20:45:16 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:45:16 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:45:16 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:45:42 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:45:42 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382736.pdf
[24-Jul-2025 20:45:42 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:45:42 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:45:42 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:46:15 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:46:15 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382768.pdf
[24-Jul-2025 20:46:15 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:46:16 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:46:16 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:46:50 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:46:50 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382802.pdf
[24-Jul-2025 20:46:50 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:46:50 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:46:50 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:47:26 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:47:26 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382839.pdf
[24-Jul-2025 20:47:26 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:47:26 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:47:26 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:47:55 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:47:55 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382869.pdf
[24-Jul-2025 20:47:55 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:47:55 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:47:55 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:48:25 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:48:25 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382898.pdf
[24-Jul-2025 20:48:25 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:48:25 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:48:25 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:49:02 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:49:02 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382927.pdf
[24-Jul-2025 20:49:02 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:49:02 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:49:02 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:49:31 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:49:31 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382965.pdf
[24-Jul-2025 20:49:31 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:49:31 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:49:31 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:49:57 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:49:57 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753382992.pdf
[24-Jul-2025 20:49:57 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:49:57 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:49:57 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:50:27 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:50:27 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753383018.pdf
[24-Jul-2025 20:50:27 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:50:27 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:50:27 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:51:01 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:51:01 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753383052.pdf
[24-Jul-2025 20:51:01 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:51:01 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:51:01 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:51:40 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:51:40 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753383083.pdf
[24-Jul-2025 20:51:40 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:51:40 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:51:40 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:52:01 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:52:01 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753383116.pdf
[24-Jul-2025 20:52:01 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:52:02 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:52:02 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:52:26 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:52:26 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_28_student_3_1753383141.pdf
[24-Jul-2025 20:52:26 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:52:26 Europe/Berlin] 📋 Creating intelligent content for: PoerBiehint
[24-Jul-2025 20:52:26 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:56:23 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:56:23 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_29_student_3_1753383375.pdf
[24-Jul-2025 20:56:23 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:56:23 Europe/Berlin] 📋 Creating intelligent content for: Kahindo 
[24-Jul-2025 20:56:23 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 20:56:51 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 20:56:51 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_29_student_3_1753383404.pdf
[24-Jul-2025 20:56:51 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 20:56:51 Europe/Berlin] 📋 Creating intelligent content for: Kahindo 
[24-Jul-2025 20:56:51 Europe/Berlin] 📄 Memorandum length: 1735 chars
[24-Jul-2025 22:11:49 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 22:11:49 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_31_student_3_1753387900.pdf
[24-Jul-2025 22:11:49 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 22:11:49 Europe/Berlin] 📋 Creating intelligent content for: Gf
[24-Jul-2025 22:11:49 Europe/Berlin] 📄 Memorandum length: 4193 chars
[24-Jul-2025 22:12:25 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 22:12:25 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_31_student_3_1753387936.pdf
[24-Jul-2025 22:12:25 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 22:12:25 Europe/Berlin] 📋 Creating intelligent content for: Gf
[24-Jul-2025 22:12:25 Europe/Berlin] 📄 Memorandum length: 4193 chars
[24-Jul-2025 22:12:58 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[24-Jul-2025 22:12:58 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_31_student_3_1753387971.pdf
[24-Jul-2025 22:12:58 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[24-Jul-2025 22:12:58 Europe/Berlin] 📋 Creating intelligent content for: Gf
[24-Jul-2025 22:12:58 Europe/Berlin] 📄 Memorandum length: 4193 chars
[25-Jul-2025 09:15:11 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:15:11 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_32_student_3_1753427705.pdf
[25-Jul-2025 09:15:11 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:15:11 Europe/Berlin] 📋 Creating intelligent content for: hello
[25-Jul-2025 09:15:11 Europe/Berlin] 📄 Memorandum length: 1735 chars
[25-Jul-2025 09:31:49 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:31:49 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_32_student_3_1753428704.pdf
[25-Jul-2025 09:31:49 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:31:49 Europe/Berlin] 📋 Creating intelligent content for: hello
[25-Jul-2025 09:31:49 Europe/Berlin] 📄 Memorandum length: 1735 chars
[25-Jul-2025 09:33:15 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:33:15 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_32_student_3_1753428790.pdf
[25-Jul-2025 09:33:15 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:33:15 Europe/Berlin] 📋 Creating intelligent content for: hello
[25-Jul-2025 09:33:15 Europe/Berlin] 📄 Memorandum length: 1735 chars
[25-Jul-2025 09:33:40 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:33:40 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_32_student_3_1753428814.pdf
[25-Jul-2025 09:33:40 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:33:40 Europe/Berlin] 📋 Creating intelligent content for: hello
[25-Jul-2025 09:33:40 Europe/Berlin] 📄 Memorandum length: 1735 chars
[25-Jul-2025 09:36:56 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:36:56 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_33_student_3_1753429011.pdf
[25-Jul-2025 09:36:56 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:36:56 Europe/Berlin] 📋 Creating intelligent content for: bravo
[25-Jul-2025 09:36:56 Europe/Berlin] 📄 Memorandum length: 675 chars
[25-Jul-2025 09:58:42 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 09:58:42 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_33_student_3_1753430314.pdf
[25-Jul-2025 09:58:42 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 09:58:42 Europe/Berlin] 📋 Creating intelligent content for: bravo
[25-Jul-2025 09:58:42 Europe/Berlin] 📄 Memorandum length: 675 chars
[25-Jul-2025 09:58:49 Europe/Berlin] 🔍 Real similarity: 11.111111111111%, Educational score: 27.8%
[25-Jul-2025 09:58:49 Europe/Berlin] 🔑 Real keyword match: 6.25%, Educational score: 18.8%, Found: account, name, rates
[25-Jul-2025 10:03:16 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:03:16 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753430590.pdf
[25-Jul-2025 10:03:16 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:03:16 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:03:16 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:03:22 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 85%
[25-Jul-2025 10:03:22 Europe/Berlin] 🔑 Real keyword match: 78.282828282828%, Educational score: 90%, Found: html, structure, semantic, markup, marks
[25-Jul-2025 10:15:27 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:15:27 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753431322.pdf
[25-Jul-2025 10:15:27 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:15:27 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:15:27 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:15:34 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 85%
[25-Jul-2025 10:15:34 Europe/Berlin] 🔑 Real keyword match: 79.545454545455%, Educational score: 90%, Found: html, structure, semantic, markup, marks
[25-Jul-2025 10:15:41 Europe/Berlin] PHP Fatal error:  Uncaught Error: Cannot pass parameter 3 by reference in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php:414
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/live_ai_grading.php on line 414
[25-Jul-2025 10:20:05 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:20:05 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753431599.pdf
[25-Jul-2025 10:20:05 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:20:05 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:20:05 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:20:13 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 85%
[25-Jul-2025 10:20:13 Europe/Berlin] 🔑 Real keyword match: 79.545454545455%, Educational score: 90%, Found: html, structure, semantic, markup, marks
[25-Jul-2025 10:37:35 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:37:35 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753432650.pdf
[25-Jul-2025 10:37:35 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:37:35 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:37:35 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:37:42 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 64.5%
[25-Jul-2025 10:37:42 Europe/Berlin] 🔍 Total words found: 334
[25-Jul-2025 10:37:42 Europe/Berlin] 🔍 After filtering: 134 keywords
[25-Jul-2025 10:37:42 Europe/Berlin] 🔍 Sample keywords: semantic, markup, marks, clean, header, footer, character, viewport, responsiveness, define
[25-Jul-2025 10:37:42 Europe/Berlin] 🔑 Real keyword match: 76.119402985075%, Adjusted score: 75%, Found: semantic, markup, marks, clean, header
[25-Jul-2025 10:42:21 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:42:21 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753432936.pdf
[25-Jul-2025 10:42:21 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:42:21 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:42:21 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:42:29 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 64.5%
[25-Jul-2025 10:42:29 Europe/Berlin] 🔍 Total words found: 334
[25-Jul-2025 10:42:29 Europe/Berlin] 🔍 After filtering: 134 keywords
[25-Jul-2025 10:42:29 Europe/Berlin] 🔍 Sample keywords: semantic, markup, marks, clean, header, footer, character, viewport, responsiveness, define
[25-Jul-2025 10:42:29 Europe/Berlin] 🔑 Real keyword match: 76.119402985075%, Adjusted score: 75%, Found: semantic, markup, marks, clean, header
[25-Jul-2025 10:46:46 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 10:46:46 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_34_student_3_1753433200.pdf
[25-Jul-2025 10:46:46 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 10:46:46 Europe/Berlin] 📋 Creating intelligent content for: Mobilestore
[25-Jul-2025 10:46:46 Europe/Berlin] 📄 Memorandum length: 3535 chars
[25-Jul-2025 10:46:53 Europe/Berlin] 🔍 Real similarity: 71.713147410359%, Educational score: 64.5%
[25-Jul-2025 10:46:53 Europe/Berlin] 🔍 Total words found: 334
[25-Jul-2025 10:46:53 Europe/Berlin] 🔍 After filtering: 134 keywords
[25-Jul-2025 10:46:53 Europe/Berlin] 🔍 Sample keywords: semantic, markup, marks, clean, header, footer, character, viewport, responsiveness, define
[25-Jul-2025 10:46:53 Europe/Berlin] 🔑 Real keyword match: 76.119402985075%, Adjusted score: 75%, Found: semantic, markup, marks, clean, header
[25-Jul-2025 10:46:56 Europe/Berlin] ⚠️ GENERATE_GRADE: No session data, using fallback values
[25-Jul-2025 11:16:02 Europe/Berlin] 🔧 SimplePDFExtractor: Skipping intelligent analyzer, letting AJAX handle it
[25-Jul-2025 11:16:02 Europe/Berlin] ⚠️ All PDF extraction methods failed for: /home/twpurnyc/public_html/student/uploads/assignments/assignment_35_student_3_1753434955.pdf
[25-Jul-2025 11:16:02 Europe/Berlin] ⚠️ Real extraction failed or no file, creating intelligent fallback
[25-Jul-2025 11:16:02 Europe/Berlin] 📋 Creating intelligent content for: science
[25-Jul-2025 11:16:02 Europe/Berlin] 📄 Memorandum length: 5734 chars
[25-Jul-2025 11:16:09 Europe/Berlin] 🔍 Real similarity: 1.5075376884422%, Educational score: 2.7%
[25-Jul-2025 11:16:09 Europe/Berlin] 🔍 Total words found: 558
[25-Jul-2025 11:16:09 Europe/Berlin] 🔍 After filtering: 297 keywords
[25-Jul-2025 11:16:09 Europe/Berlin] 🔍 Sample keywords: engineering, professional, application, scientific, knowledge, mathematics, solve, practical, problems, involves
[25-Jul-2025 11:16:09 Europe/Berlin] 🔑 Real keyword match: 1.6835016835017%, Adjusted score: 3.4%, Found: science, understanding, analysis, require, understand
[25-Jul-2025 11:16:12 Europe/Berlin] ⚠️ GENERATE_GRADE: No session data, using fallback values
[06-Nov-2025 16:40:18 Europe/Berlin] PHP Warning:  session_start(): open(C:\Users\user\Downloads\xamppfile\tmp/sess_shrdp454b4kqdmcr7f0h2h3k3p, O_RDWR) failed: No such file or directory (2) in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 7
[06-Nov-2025 16:40:18 Europe/Berlin] PHP Warning:  session_start(): Failed to read session data: files (path: C:\Users\user\Downloads\xamppfile\tmp) in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 7
[06-Nov-2025 16:40:18 Europe/Berlin] DEBUG - Dashboard session save path set to: /tmp
[06-Nov-2025 16:40:18 Europe/Berlin] isLoggedIn check result: true
[06-Nov-2025 16:40:18 Europe/Berlin] Session data: Array
(
    [created_at] => 1762439345
    [last_regeneration] => 1762439345
    [stored_redirect] => /student/course-detail.php?id=am5xVTdudk5XNXNTMEtKUzVESnJaUT09&lesson=4
    [user_id] => 15
    [username] => swususan0@gmail.com
    [email] => futuristicpath357@gmail.com
    [first_name] => Kahindo
    [last_name] => Brian
    [user_role] => student
    [logged_in] => 1
    [is_logged_in] => 1
    [login_time] => 1762439345
    [session_started_at] => 2025-11-06 15:29:05
)

[06-Nov-2025 16:40:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to undefined function hasRole() in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:14
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 14
[06-Nov-2025 16:43:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 16:43:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:76
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 76
[06-Nov-2025 16:46:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 16:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 16:48:51 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:116
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 116
[06-Nov-2025 16:52:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 16:55:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 16:55:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:211
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 211
[06-Nov-2025 16:57:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[06-Nov-2025 17:00:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[07-Nov-2025 08:54:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[07-Nov-2025 09:13:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":2,"lesson_id":2,"course_id":13,"progress_percentage":100,"current_time":1271,"completed":1,"completed_raw":"1","student_id":15}
[07-Nov-2025 09:22:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":2,"lesson_id":2,"course_id":13,"progress_percentage":100,"current_time":1271,"completed":1,"completed_raw":"1","student_id":15}
[07-Nov-2025 09:57:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[10-Nov-2025 15:52:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":2,"lesson_id":2,"course_id":13,"progress_percentage":100,"current_time":1271,"completed":1,"completed_raw":"1","student_id":15}
[13-Nov-2025 18:02:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":2,"lesson_id":2,"course_id":13,"progress_percentage":100,"current_time":1271,"completed":1,"completed_raw":"1","student_id":15}
[21-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":2,"lesson_id":2,"course_id":13,"progress_percentage":100,"current_time":1271,"completed":1,"completed_raw":"1","student_id":15}
[27-Nov-2025 18:47:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":1,"lesson_id":0,"course_id":13,"progress_percentage":100,"current_time":19,"completed":1,"completed_raw":"1","student_id":15}
[27-Nov-2025 18:47:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":1,"lesson_id":0,"course_id":13,"progress_percentage":100,"current_time":19,"completed":1,"completed_raw":"1","student_id":15}
[27-Nov-2025 18:47:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":1,"lesson_id":0,"course_id":13,"progress_percentage":100,"current_time":19,"completed":1,"completed_raw":"1","student_id":15}
[28-Nov-2025 14:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:48:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:49:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":16,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:53:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 14:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:06:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":15,"current_time":47,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":15,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":16,"current_time":51,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":16,"current_time":52,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":17,"current_time":54,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":18,"current_time":56,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":18,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":19,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":19,"current_time":62,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":20,"current_time":64,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":21,"current_time":67,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":22,"current_time":69,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":24,"current_time":76,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":25,"current_time":78,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":25,"current_time":79,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":25,"current_time":81,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":26,"current_time":83,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":27,"current_time":85,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":27,"current_time":87,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":28,"current_time":89,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":29,"current_time":91,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":31,"current_time":98,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":31,"current_time":99,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":32,"current_time":101,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":32,"current_time":103,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":34,"current_time":108,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:07:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":34,"current_time":108,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":35,"current_time":111,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":36,"current_time":113,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":37,"current_time":116,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":37,"current_time":119,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":38,"current_time":121,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":39,"current_time":124,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":39,"current_time":125,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":50,"current_time":159,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":50,"current_time":159,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":51,"current_time":161,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":51,"current_time":163,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":52,"current_time":165,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":53,"current_time":167,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:08:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":53,"current_time":168,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:09:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:16:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:16:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:16:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:16:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":15,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":16,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":17,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":18,"current_time":46,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":19,"current_time":48,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":20,"current_time":51,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":21,"current_time":53,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":22,"current_time":56,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":23,"current_time":59,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":24,"current_time":61,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:17:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":25,"current_time":64,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:18:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":26,"current_time":66,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:18:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":27,"current_time":69,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:18:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":27,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:29:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":21,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[28-Nov-2025 15:34:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:34:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 15:44:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":14,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:06:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:07:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:07:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:07:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:07:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:35:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:35:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":15,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:42:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:43:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":2,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:49:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 16:50:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":19,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:29:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":6,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:37:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:38:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:38:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":18,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:39:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":87,"current_time":104,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":99,"current_time":119,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:44:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:45:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 17:59:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[28-Nov-2025 18:06:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[28-Nov-2025 18:06:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 18:06:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":7,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 18:06:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 18:15:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":67,"current_time":80,"completed":0,"completed_raw":"0","student_id":15}
[28-Nov-2025 18:16:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":99,"current_time":119,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 08:34:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 08:54:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 08:56:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 08:56:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":9,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 08:56:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":11,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 08:57:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":12,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 10:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 11:30:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":100,"current_time":0,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 12:07:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:07:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:07:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 25%
[29-Nov-2025 12:07:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:07:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:07:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 25%
[29-Nov-2025 12:07:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:07:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:07:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 25%
[29-Nov-2025 12:07:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:07:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:07:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 25%
[29-Nov-2025 12:11:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:11:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:11:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 25%
[29-Nov-2025 12:11:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:11:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:11:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 100%
[29-Nov-2025 12:11:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:11:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:11:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 25%
[29-Nov-2025 12:11:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:11:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:11:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 12:13:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:13:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:13:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 25%
[29-Nov-2025 12:13:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:13:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:13:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 25%
[29-Nov-2025 12:13:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:13:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:13:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 100%
[29-Nov-2025 12:13:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:13:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:13:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 12:13:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:13:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:13:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 12:15:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":100,"current_time":120,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 12:15:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":25,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:16:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":25,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:16:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":120,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 12:21:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:21:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:25:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:25:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:25:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:25:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":10,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:26:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":15,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:26:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":0,"course_id":13,"progress_percentage":20,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:30:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:30:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:42:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:42:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:43:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:43:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:56:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:56:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:56:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:56:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 5%
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 5%
[29-Nov-2025 12:57:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 5%
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 5%
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 5%
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 6%
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 6%
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 6%
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 6%
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 7%
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 7%
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 7%
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 7%
[29-Nov-2025 12:57:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":7,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 7%
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 8%
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 8%
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 8%
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 8%
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 9%
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":10,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:47 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:47 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:47 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 10%
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 11%
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 11%
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 11%
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 11%
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 11%
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 12%
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 12%
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 12%
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 12%
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 13%
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:57:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 14%
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 15%
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 15%
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 15%
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 15%
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 15%
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 16%
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 16%
[29-Nov-2025 12:58:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":16,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 16%
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 16%
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 16%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 12:58:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 18%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 17%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 18%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 18%
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 18%
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 18%
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:00:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 19%
[29-Nov-2025 13:04:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 20%
[29-Nov-2025 13:04:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 20%
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 13:04:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 24, Course: 13, Progress: 20%
[29-Nov-2025 13:04:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:04:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:04:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:25:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:25:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:31:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:31:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 13:54:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 13:54:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:05:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:05:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:08:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:08:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:08:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:08:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:11:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:11:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:16:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:16:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:20:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:20:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:20:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:20:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:20:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:20:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:20:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:20:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:20:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":13,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:20:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:20:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:20:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":17,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:20:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:20:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":21,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":25,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":29,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":33,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":38,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":42,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":46,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":50,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":54,"current_time":65,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":58,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":63,"current_time":75,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:21:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":67,"current_time":80,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:21:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:21:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":71,"current_time":85,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:22:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":75,"current_time":90,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:22:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":79,"current_time":95,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:22:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":83,"current_time":100,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:22:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":88,"current_time":105,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:22:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":92,"current_time":110,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:22:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:22:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":95,"current_time":115,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:22:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:22:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 14:28:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 14:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:28:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":17,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:28:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":21,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:28:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:28:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":25,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":30,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":34,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":38,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":42,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":46,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":50,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:29:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":4,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":8,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":13,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":17,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:29:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":22,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":26,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":30,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":34,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":38,"current_time":46,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":42,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":46,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":50,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":54,"current_time":65,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":58,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":65,"current_time":78,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":67,"current_time":81,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:30:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":72,"current_time":86,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:31:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":75,"current_time":91,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:31:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":79,"current_time":95,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:31:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":83,"current_time":100,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:31:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":88,"current_time":105,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:31:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":92,"current_time":110,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:31:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":95,"current_time":115,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:33:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:33:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:33:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":9,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":19,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:33:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:33:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":9,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":19,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":29,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":38,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":48,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":57,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:33:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":66,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:34:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":75,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:34:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":83,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:34:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":94,"current_time":51,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:34:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":25,"lesson_id":25,"course_id":13,"progress_percentage":95,"current_time":56,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:38:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:38:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:40:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 14:40:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 14:40:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 14:40:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:40:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:43:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:43:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:43:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":1,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:43:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":2,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:43:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:43:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:43:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":1,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:43:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":2,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:43:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":3,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:44:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":4,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:44:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":5,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:44:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":6,"current_time":63,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:44:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":7,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:44:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":8,"current_time":80,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":9,"current_time":91,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:45:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:45:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":1,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":2,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":3,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":4,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:45:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":5,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:46:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":6,"current_time":59,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:46:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":7,"current_time":69,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:46:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":8,"current_time":82,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:46:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":10,"current_time":108,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":16,"current_time":166,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:48:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":21,"current_time":226,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:49:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":27,"current_time":286,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:49:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":28,"current_time":293,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:50:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":29,"current_time":305,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:50:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":30,"current_time":313,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:50:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 14:50:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 14:50:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":1,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:50:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":2,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:51:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":3,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:51:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":4,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:51:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":5,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:51:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":6,"current_time":59,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:51:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":7,"current_time":69,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:52:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":8,"current_time":82,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:52:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":9,"current_time":91,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:52:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":10,"current_time":102,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:52:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":11,"current_time":113,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:52:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":12,"current_time":123,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:53:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":15,"current_time":162,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:53:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":16,"current_time":164,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":17,"current_time":177,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:53:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":18,"current_time":187,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:53:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":19,"current_time":197,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:54:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":20,"current_time":207,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:54:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":21,"current_time":219,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:54:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":22,"current_time":229,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:54:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":23,"current_time":239,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:54:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":24,"current_time":249,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:55:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":25,"current_time":261,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:55:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":26,"current_time":271,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:55:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":27,"current_time":282,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:55:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":28,"current_time":293,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:55:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":29,"current_time":304,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:56:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":35,"current_time":371,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:57:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":41,"current_time":431,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:58:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":46,"current_time":491,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 14:59:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":52,"current_time":551,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:00:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":58,"current_time":611,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:01:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":63,"current_time":671,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:02:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":69,"current_time":731,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:03:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":75,"current_time":792,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:04:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":77,"current_time":819,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:04:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":78,"current_time":822,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:04:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":79,"current_time":833,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:04:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":80,"current_time":843,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:04:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":81,"current_time":853,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":82,"current_time":865,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":83,"current_time":875,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":84,"current_time":885,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":85,"current_time":897,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":86,"current_time":907,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:05:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":87,"current_time":917,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:06:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":88,"current_time":929,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:06:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":89,"current_time":939,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:06:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":90,"current_time":949,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:06:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":91,"current_time":959,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:06:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":92,"current_time":971,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":93,"current_time":981,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":94,"current_time":991,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":95,"current_time":1003,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":96,"current_time":1013,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":97,"current_time":1023,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:07:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":98,"current_time":1033,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:08:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":99,"current_time":1045,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:08:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":26,"lesson_id":26,"course_id":13,"progress_percentage":100,"current_time":1055,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:10:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:10:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:13:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 4, Course: 13, Progress: 100%
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 15:13:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:13:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:19:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:19:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:22:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:22:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:22:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:22:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:22:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:22:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:22:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:23:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":6,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:23:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":7,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:23:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":8,"current_time":80,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:23:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":9,"current_time":92,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:23:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":10,"current_time":102,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":11,"current_time":112,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":12,"current_time":124,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":13,"current_time":134,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":14,"current_time":144,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":154,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:24:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":16,"current_time":164,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:25:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":20,"current_time":212,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:25:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":21,"current_time":218,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:25:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":22,"current_time":230,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:26:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":23,"current_time":240,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:26:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":24,"current_time":250,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:26:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":25,"current_time":260,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:26:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":26,"current_time":272,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:26:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":27,"current_time":282,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":28,"current_time":292,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":29,"current_time":304,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":30,"current_time":314,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":31,"current_time":324,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":32,"current_time":336,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":33,"current_time":346,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":34,"current_time":356,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":35,"current_time":366,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":36,"current_time":378,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:28:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":37,"current_time":388,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:28:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":38,"current_time":398,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":39,"current_time":410,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":40,"current_time":420,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":41,"current_time":430,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":42,"current_time":440,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":43,"current_time":452,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":44,"current_time":462,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":45,"current_time":472,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":46,"current_time":484,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":47,"current_time":494,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":48,"current_time":504,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":49,"current_time":516,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:30:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":50,"current_time":526,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:31:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":51,"current_time":536,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:31:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":52,"current_time":546,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:31:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:31:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:31:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:31:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:32:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:32:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:32:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:32:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:32:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:33:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:33:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:33:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":48,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:33:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":6,"current_time":60,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:33:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":7,"current_time":70,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":8,"current_time":80,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":9,"current_time":92,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":10,"current_time":102,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":11,"current_time":112,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":12,"current_time":122,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:34:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":13,"current_time":134,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:35:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":14,"current_time":144,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:35:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":154,"completed":0,"completed_raw":"0","student_id":15}
[29-Nov-2025 15:35:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:35:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:38:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:38:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:44:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:44:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:48:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:48:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 15:52:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 15:52:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:06:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:06:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:11:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:11:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:15:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:15:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:17:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:17:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:21:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:21:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:26:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:26:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:29:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:29:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:29:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:29:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 16:54:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 16:54:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:01:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:01:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:07:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:07:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:12:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:12:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:15:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:15:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:25:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:00 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:02 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:26:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:42 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:28:44 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:31:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:42 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:43 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:44 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:45 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:46 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:47 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:48 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:31:56 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 6%
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:29 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:30 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:32 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:33 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:33 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:34 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:35 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:41 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 7%
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:49 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:50 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:51 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:52 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:53 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:54 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 8%
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:55 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:56 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:57 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:58 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:32:59 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:00 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:01 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 9%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:04 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 10%
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:33:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:35:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:35:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:36:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:48 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:48
[29-Nov-2025 17:38:48 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:48 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:48 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:48 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:48 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:48 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:48 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:48 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:54 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:54
[29-Nov-2025 17:38:54 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:54 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:54 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:54 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:54 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:54 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:54 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:54
[29-Nov-2025 17:38:54 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:54 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:54 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:54 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:54 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:54 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:54 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:54 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:55 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:55
[29-Nov-2025 17:38:55 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:55 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:55 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:55 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:55 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:55
[29-Nov-2025 17:38:55 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:55 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:55 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:55 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:55 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:55
[29-Nov-2025 17:38:55 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:55 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:55 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:55 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:55 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:55 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:56 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:56
[29-Nov-2025 17:38:56 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:56 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:56 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:56 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:56 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:56
[29-Nov-2025 17:38:56 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:56 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:56 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:56 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:56 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:56
[29-Nov-2025 17:38:56 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:56 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:56 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:56 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:56 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:56
[29-Nov-2025 17:38:56 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:56 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:56 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:56 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:56 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:56 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:57 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:57
[29-Nov-2025 17:38:57 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:57 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:57 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:57 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:57 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:57
[29-Nov-2025 17:38:57 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:57 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:57 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:57 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:57 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:57
[29-Nov-2025 17:38:57 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:57 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:57 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:57 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:57 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:57
[29-Nov-2025 17:38:57 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:57 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:57 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:57 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:57 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:57 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:58 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:58
[29-Nov-2025 17:38:58 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:58 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:58 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:58 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:58 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:58
[29-Nov-2025 17:38:58 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:58 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:58 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:58 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:58 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:58
[29-Nov-2025 17:38:58 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:58 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:58 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:58 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:58 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:59 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:59
[29-Nov-2025 17:38:59 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:59 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:59 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:59 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:59 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:59
[29-Nov-2025 17:38:59 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:59 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:59 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:59 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:59 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:59
[29-Nov-2025 17:38:59 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:59 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:59 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:59 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:38:59 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:38:59
[29-Nov-2025 17:38:59 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:38:59 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:38:59 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:38:59 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:38:59 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:38:59 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:00 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:00
[29-Nov-2025 17:39:00 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:00 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:00 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:00 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:00
[29-Nov-2025 17:39:00 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:00 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:00 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:00 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:00
[29-Nov-2025 17:39:00 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:00 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:00 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:00 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:00
[29-Nov-2025 17:39:00 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:00 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:00 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:00 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:00 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:01 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:01
[29-Nov-2025 17:39:01 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:01 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:01 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:01 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:01 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:01
[29-Nov-2025 17:39:01 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:01 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:01 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:01 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:01 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:01
[29-Nov-2025 17:39:01 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:01 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:01 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:01 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:01 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:01
[29-Nov-2025 17:39:01 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:01 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:01 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:01 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:01 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:01 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:02 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:02
[29-Nov-2025 17:39:02 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:02 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:02 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:02 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:02 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:02
[29-Nov-2025 17:39:02 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:02 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:02 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:02 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:02 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:02
[29-Nov-2025 17:39:02 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:02 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:02 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:02 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:02 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:02 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:03 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:03
[29-Nov-2025 17:39:03 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:03 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:03 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:03
[29-Nov-2025 17:39:03 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:03 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:03 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:03
[29-Nov-2025 17:39:03 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:03 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:03 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:03
[29-Nov-2025 17:39:03 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:03 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:04
[29-Nov-2025 17:39:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:04 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:04
[29-Nov-2025 17:39:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:04 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:04
[29-Nov-2025 17:39:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:04 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:04
[29-Nov-2025 17:39:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:04 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:05 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:05
[29-Nov-2025 17:39:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:05 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:06
[29-Nov-2025 17:39:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:06 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:06 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:07
[29-Nov-2025 17:39:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:07 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:08
[29-Nov-2025 17:39:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:09
[29-Nov-2025 17:39:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:09 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:09 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:10
[29-Nov-2025 17:39:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:10 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:10 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:11
[29-Nov-2025 17:39:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:11 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:11 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:12
[29-Nov-2025 17:39:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:12 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:13
[29-Nov-2025 17:39:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:13 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:14
[29-Nov-2025 17:39:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:15
[29-Nov-2025 17:39:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:16
[29-Nov-2025 17:39:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:16 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:17
[29-Nov-2025 17:39:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:17
[29-Nov-2025 17:39:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:17
[29-Nov-2025 17:39:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:17
[29-Nov-2025 17:39:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:278
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(253): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 278
[29-Nov-2025 17:39:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:39:18
[29-Nov-2025 17:39:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:39:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:39:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:39:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:39:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 5%
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::execute() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 121
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Warning:  mysqli_stmt::fetch() expects exactly 0 parameters, 1 given in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 122
[29-Nov-2025 17:39:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:183
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(403): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 183
[29-Nov-2025 17:42:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:19
[29-Nov-2025 17:42:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:19 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:24
[29-Nov-2025 17:42:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:24 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:25
[29-Nov-2025 17:42:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:25 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:28 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:28
[29-Nov-2025 17:42:28 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:28 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:28 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:28 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:28 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:29 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:29
[29-Nov-2025 17:42:29 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:29 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:29 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:29 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:29 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:29
[29-Nov-2025 17:42:29 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:29 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:29 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:29 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:29 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:29
[29-Nov-2025 17:42:29 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:29 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:29 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:29 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:29 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:29
[29-Nov-2025 17:42:29 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:29 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:29 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:29 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:29 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:29 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:30 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:30
[29-Nov-2025 17:42:30 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:30 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:30 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:30 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:30 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:30
[29-Nov-2025 17:42:30 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:30 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:30 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:30 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:30 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:30
[29-Nov-2025 17:42:30 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:30 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:30 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:30 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:30 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:30 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:31 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:31
[29-Nov-2025 17:42:31 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:31 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:31 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:31 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:31 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:31
[29-Nov-2025 17:42:31 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:31 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:31 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:31 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:31 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:31
[29-Nov-2025 17:42:31 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:31 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:31 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:31 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:31 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:31 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:32 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:32
[29-Nov-2025 17:42:32 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:32 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:32 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:32 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:32
[29-Nov-2025 17:42:32 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:32 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:32 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:32 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:32
[29-Nov-2025 17:42:32 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:32 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:32 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:32 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:32
[29-Nov-2025 17:42:32 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:32 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:32 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:32 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:32 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:32 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:33 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:33
[29-Nov-2025 17:42:33 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:33 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:33 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:33 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:33 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:33
[29-Nov-2025 17:42:33 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:33 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:33 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:33 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:33 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:33
[29-Nov-2025 17:42:33 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:33 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:33 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:33 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:33 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:33
[29-Nov-2025 17:42:33 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:33 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:33 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:33 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:33 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:33 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:34 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:34
[29-Nov-2025 17:42:34 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:34 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:34 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:34 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:34 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:34
[29-Nov-2025 17:42:34 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:34 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:34 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:34 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:34 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:34
[29-Nov-2025 17:42:34 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:34 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:34 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:34 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:34 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:34
[29-Nov-2025 17:42:34 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:34 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:34 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:34 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:34 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:34 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:35 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:35
[29-Nov-2025 17:42:35 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:35 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:35 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:35 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:35 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:35
[29-Nov-2025 17:42:35 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:35 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:35 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:35 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:35 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:35
[29-Nov-2025 17:42:35 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:35 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:35 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:35 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:35 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:35 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:36 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:36
[29-Nov-2025 17:42:36 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:36 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:36 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:36 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:36 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:36
[29-Nov-2025 17:42:36 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:36 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:36 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:36 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:36 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:36
[29-Nov-2025 17:42:36 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:36 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:36 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:36 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:36 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:36
[29-Nov-2025 17:42:36 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:36 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:36 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:36 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:36 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:36 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:37 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:37
[29-Nov-2025 17:42:37 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:37 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:37 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:37 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:37 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:38 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:38
[29-Nov-2025 17:42:38 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:38 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:38 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:38 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:38 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:38 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:39 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:39 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:39
[29-Nov-2025 17:42:39 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:39 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:39 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:39 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:39 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:40 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:40
[29-Nov-2025 17:42:40 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:40 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:40 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:40 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:40
[29-Nov-2025 17:42:40 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:40 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:40 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:40 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:40
[29-Nov-2025 17:42:40 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:40 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:40 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:42:40 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:40
[29-Nov-2025 17:42:40 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:40 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:40 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function execute() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:281
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(256): VideoProgressHandler->calculateCourseProgress(13)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(77): VideoProgressHandler->getCourseProgress(Array)
#2 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#3 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 281
[29-Nov-2025 17:42:40 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:42:40
[29-Nov-2025 17:42:40 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:42:40 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:42:40 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:42:40 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:42:40 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:42:40 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:159
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(406): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 159
[29-Nov-2025 17:45:58 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:45:58
[29-Nov-2025 17:45:58 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:45:58 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:45:58 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:45:58 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:45:58 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:45:58 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:45:58 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:02 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:02
[29-Nov-2025 17:46:02 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:03 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:03
[29-Nov-2025 17:46:03 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:03 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:03 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:03 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:03 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:03 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:03 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:04
[29-Nov-2025 17:46:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:04
[29-Nov-2025 17:46:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:05
[29-Nov-2025 17:46:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:05
[29-Nov-2025 17:46:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:05
[29-Nov-2025 17:46:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:05 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:05
[29-Nov-2025 17:46:05 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:05 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:05 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:05 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:05 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:06
[29-Nov-2025 17:46:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:06
[29-Nov-2025 17:46:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:06
[29-Nov-2025 17:46:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:06 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:06
[29-Nov-2025 17:46:06 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:06 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:06 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:06 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:06 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:07
[29-Nov-2025 17:46:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:07
[29-Nov-2025 17:46:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:07 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:07
[29-Nov-2025 17:46:07 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:07 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:07 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:07 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:07 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:08
[29-Nov-2025 17:46:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:08
[29-Nov-2025 17:46:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:08
[29-Nov-2025 17:46:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:08
[29-Nov-2025 17:46:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:09
[29-Nov-2025 17:46:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:09
[29-Nov-2025 17:46:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:09
[29-Nov-2025 17:46:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:09 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:09
[29-Nov-2025 17:46:09 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:09 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:09 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:09 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:09 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:10
[29-Nov-2025 17:46:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:10
[29-Nov-2025 17:46:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:10 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:10
[29-Nov-2025 17:46:10 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:10 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:10 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:10 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:10 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:11
[29-Nov-2025 17:46:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:11
[29-Nov-2025 17:46:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:11
[29-Nov-2025 17:46:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:11
[29-Nov-2025 17:46:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:12
[29-Nov-2025 17:46:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:12
[29-Nov-2025 17:46:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:12
[29-Nov-2025 17:46:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:13
[29-Nov-2025 17:46:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:13
[29-Nov-2025 17:46:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:13
[29-Nov-2025 17:46:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:13
[29-Nov-2025 17:46:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:13
[29-Nov-2025 17:46:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:14
[29-Nov-2025 17:46:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:14
[29-Nov-2025 17:46:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:14
[29-Nov-2025 17:46:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:14
[29-Nov-2025 17:46:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:14 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:46:14 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:46:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:46:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:46:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:15
[29-Nov-2025 17:46:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:15 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:46:15 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:16 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:16
[29-Nov-2025 17:46:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:16 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:17
[29-Nov-2025 17:46:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:17 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:17 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:18
[29-Nov-2025 17:46:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:19 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:19 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:19 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:19
[29-Nov-2025 17:46:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:19 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:19 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:46:20 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:20 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:20 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:20 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:20
[29-Nov-2025 17:46:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:21 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:21 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:21 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:21
[29-Nov-2025 17:46:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:22
[29-Nov-2025 17:46:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:46:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:23
[29-Nov-2025 17:46:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:46:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:46:23
[29-Nov-2025 17:46:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:46:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:46:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:46:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:46:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:46:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:46:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:46:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 4%
[29-Nov-2025 17:46:23 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:128
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(269): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 128
[29-Nov-2025 17:48:04 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:04
[29-Nov-2025 17:48:04 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:04 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:04 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:04 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:04 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:04 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:04 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:08
[29-Nov-2025 17:48:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:08 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:08
[29-Nov-2025 17:48:08 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:08 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:08 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:08 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:08 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:08 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:08 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:11
[29-Nov-2025 17:48:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:11
[29-Nov-2025 17:48:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:11 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:11
[29-Nov-2025 17:48:11 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:11 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:11 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:11 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:11 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:12
[29-Nov-2025 17:48:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:12
[29-Nov-2025 17:48:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:12
[29-Nov-2025 17:48:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:12 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:12
[29-Nov-2025 17:48:12 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:12 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:12 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:12 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:12 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:13
[29-Nov-2025 17:48:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:13
[29-Nov-2025 17:48:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:13
[29-Nov-2025 17:48:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:13 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:13
[29-Nov-2025 17:48:13 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:13 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:13 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:13 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:13 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:14
[29-Nov-2025 17:48:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:14
[29-Nov-2025 17:48:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:14
[29-Nov-2025 17:48:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:14 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:14 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:14 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:14 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:14 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:14
[29-Nov-2025 17:48:14 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:15
[29-Nov-2025 17:48:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:15
[29-Nov-2025 17:48:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:15 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:15
[29-Nov-2025 17:48:15 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:15 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:15 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:15 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:15 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:16
[29-Nov-2025 17:48:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:16
[29-Nov-2025 17:48:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:16
[29-Nov-2025 17:48:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:16 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:16
[29-Nov-2025 17:48:16 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:16 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:16 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:16 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:16 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:17
[29-Nov-2025 17:48:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:17
[29-Nov-2025 17:48:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:17 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:17
[29-Nov-2025 17:48:17 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:17 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:17 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:17 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:17 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:18
[29-Nov-2025 17:48:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:18
[29-Nov-2025 17:48:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:18
[29-Nov-2025 17:48:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:18
[29-Nov-2025 17:48:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:18 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:18 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:18 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:18 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:18 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:18
[29-Nov-2025 17:48:18 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:19
[29-Nov-2025 17:48:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:19
[29-Nov-2025 17:48:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:19 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:19
[29-Nov-2025 17:48:19 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:19 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:19 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:19 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:19 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:20
[29-Nov-2025 17:48:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:20
[29-Nov-2025 17:48:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:20
[29-Nov-2025 17:48:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:20 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:20
[29-Nov-2025 17:48:20 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:20 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:20 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:20 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:20 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:21
[29-Nov-2025 17:48:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:21
[29-Nov-2025 17:48:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:21
[29-Nov-2025 17:48:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:48:21 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:21
[29-Nov-2025 17:48:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:48:21 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:21 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:21
[29-Nov-2025 17:48:21 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:21 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:21 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:21 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:21 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:48:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:48:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 2%
[29-Nov-2025 17:48:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:22 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:22 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:22
[29-Nov-2025 17:48:22 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:22 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:22 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:22 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:22 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:23 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:23 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:23 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:23 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:23
[29-Nov-2025 17:48:23 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:23 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:23 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:23 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:23 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:23 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:24 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:24 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:24 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:24 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:24
[29-Nov-2025 17:48:24 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:24 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:24 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:24 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:24 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:25 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:25 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:25 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:25 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:25
[29-Nov-2025 17:48:25 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:25 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:25 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:25 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:25 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:25 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:26 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:26 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:26 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:26 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:26
[29-Nov-2025 17:48:26 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:26 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:26 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:26 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:26 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:26 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:27
[29-Nov-2025 17:48:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:27 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:27 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:27
[29-Nov-2025 17:48:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:27 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:27 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:27 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:27
[29-Nov-2025 17:48:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:27 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:27 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:27 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:48:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:27
[29-Nov-2025 17:48:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:27 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:27 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Action requested: get_course_progress
[29-Nov-2025 17:48:27 Europe/Berlin] 🚀 VIDEO PROGRESS HANDLER: Script started at 2025-11-29 17:48:27
[29-Nov-2025 17:48:27 Europe/Berlin] 🔗 VIDEO PROGRESS: Attempting to include config.php
[29-Nov-2025 17:48:27 Europe/Berlin] 📊 VIDEO PROGRESS: Config loaded, checking database connection...
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Database connection found, creating handler...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Student ID initialized as: 15
[29-Nov-2025 17:48:27 Europe/Berlin] ✅ VIDEO PROGRESS: Handler created successfully
[29-Nov-2025 17:48:27 Europe/Berlin] 🎯 VIDEO PROGRESS: Starting request handling...
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Action requested: save_progress
[29-Nov-2025 17:48:27 Europe/Berlin] VIDEO PROGRESS: Saving - Video: 27, Course: 13, Progress: 3%
[29-Nov-2025 17:48:27 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php:134
Stack trace:
#0 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(69): VideoProgressHandler->saveProgress(Array)
#1 /home/twpurnyc/public_html/student/ajax/video-progress-handler.php(275): VideoProgressHandler->handleRequest()
#2 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/video-progress-handler.php on line 134
[29-Nov-2025 17:57:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 FORWARDING: {"action":"forward_to_existing_system","video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2}
[29-Nov-2025 17:57:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 FORWARDING: {"action":"forward_to_existing_system","video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2}
[29-Nov-2025 17:57:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:30 Europe/Berlin] 🔄 FORWARDING: {"action":"forward_to_existing_system","video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5}
[29-Nov-2025 17:57:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 FORWARDING: {"action":"forward_to_existing_system","video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5}
[29-Nov-2025 17:57:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 FORWARDING: {"action":"forward_to_existing_system","video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":6}
[29-Nov-2025 17:57:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":6,"current_time":24,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 17:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:03:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:23 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:04:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:04:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":3}
[29-Nov-2025 18:04:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:04:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:04:31 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:04:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:04:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:06:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:06:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:06:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":5}
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:06:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:06:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:09:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:09:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:09:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:09:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":5}
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:10:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:10:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:19:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:43 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":3}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":3}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:19:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:19:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:18 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:20:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":4}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":4,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":63,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:29 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:20:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":65,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:20:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:26:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:26:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:26:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:26:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:26:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:26:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:26:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:26:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":2}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":2,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:20 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":5}
[29-Nov-2025 18:27:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":7}
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":7,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":7}
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":7,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":9}
[29-Nov-2025 18:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":9,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":9}
[29-Nov-2025 18:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":9,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":9}
[29-Nov-2025 18:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":9,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":11}
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":11,"current_time":47,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":11}
[29-Nov-2025 18:27:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":11,"current_time":47,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:27:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":13}
[29-Nov-2025 18:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":13,"current_time":56,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:04 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":13}
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":13,"current_time":56,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":13}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":13,"current_time":56,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":65,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":65,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":15,"current_time":65,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":17}
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":17,"current_time":75,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":17}
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":17,"current_time":75,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:39 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":19}
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":19,"current_time":83,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:28:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:07 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":21}
[29-Nov-2025 18:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":21,"current_time":90,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":21}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":21}
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":21,"current_time":90,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":21,"current_time":91,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:10 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":21}
[29-Nov-2025 18:29:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:29:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":21,"current_time":92,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:29:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:29:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":98}
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":27,"progress_percentage":100}
[29-Nov-2025 18:37:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":98,"current_time":424,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:37:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":13,"progress_percentage":100,"current_time":424,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:37:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:37:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:38:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":100}
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":100}
[29-Nov-2025 18:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":54,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":54,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 18:39:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":100}
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":100}
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":54,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":54,"completed":1,"completed_raw":1,"student_id":15}
[29-Nov-2025 18:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[29-Nov-2025 18:39:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:47 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":4}
[29-Nov-2025 18:39:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":4,"current_time":2,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":9}
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":9}
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":9,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":10}
[29-Nov-2025 18:39:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":10}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":10}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":11}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":11}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":10}
[29-Nov-2025 18:39:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":11,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":11}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":12}
[29-Nov-2025 18:39:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":12}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":13}
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":11,"current_time":6,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":12,"current_time":6,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":13,"current_time":6,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":12,"current_time":6,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":15,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":15,"current_time":7,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":16}
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":15,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":16,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":11,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":17}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":17}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":17}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":18}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":17,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":18}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":18}
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":17,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:57 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":18}
[29-Nov-2025 18:39:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":18,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":18,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":18,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":19}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":19}
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":19,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":19,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:58 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":20}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":20}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":18,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":20,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":17,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":20}
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":20,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":21}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":20,"current_time":11,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":21,"current_time":11,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":22}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":23}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":22}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":21}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":22,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":23}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":23}
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":23,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":22,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":21,"current_time":11,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":24}
[29-Nov-2025 18:40:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":24}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":24}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":23,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":23,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":24,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":24,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":24,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[29-Nov-2025 18:40:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[29-Nov-2025 18:40:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:42:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:42:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:43:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:43:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:43:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:43:05 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":24}
[30-Nov-2025 08:43:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":24,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:43:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:43:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:43:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:43:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:43:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:43:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:26 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":4,"progress_percentage":24}
[30-Nov-2025 08:47:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":24,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:38 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":5}
[30-Nov-2025 08:47:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":5,"current_time":2,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":5}
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":5,"current_time":2,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":10}
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":10,"current_time":4,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:41 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":10}
[30-Nov-2025 08:47:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":11}
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":11,"current_time":5,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":16}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":16,"current_time":7,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":16}
[30-Nov-2025 08:47:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":16,"current_time":7,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":21}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":21,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":21}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":21,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":22}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":27}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":28}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":28,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":29}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":28}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":29}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":27,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":29,"current_time":14,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":29,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":28,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":30}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":30,"current_time":14,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":35}
[30-Nov-2025 08:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":35,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:53 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":35}
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":35,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":40}
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":40,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":40}
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":40,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":45}
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":45,"current_time":21,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":45}
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":45,"current_time":21,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:47:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:47:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":50}
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":50,"current_time":23,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":50}
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":50,"current_time":24,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":55}
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":55,"current_time":26,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":55}
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":55,"current_time":26,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:05 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":60}
[30-Nov-2025 08:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":60,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":60}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":60,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":65}
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":65,"current_time":31,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":65}
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":65,"current_time":31,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":70}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":70}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":71}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":71}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":71,"current_time":34,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":71,"current_time":34,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:11 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":72}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":70,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":70,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":72,"current_time":34,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":77}
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":77,"current_time":36,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":78}
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":78,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:16 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":83}
[30-Nov-2025 08:48:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":83,"current_time":39,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":83}
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":83,"current_time":39,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":88}
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":88,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":88}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":88,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":100}
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":100,"current_time":43,"completed":1,"completed_raw":1,"student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":92}
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":92,"current_time":43,"completed":1,"completed_raw":1,"student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":92}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":92,"current_time":44,"completed":1,"completed_raw":1,"student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:23 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":97}
[30-Nov-2025 08:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":97,"current_time":46,"completed":1,"completed_raw":1,"student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 FORWARDING save_progress: {"video_id":28,"progress_percentage":97}
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":28,"lesson_id":28,"course_id":13,"progress_percentage":97,"current_time":46,"completed":1,"completed_raw":1,"student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 08:49:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 08:49:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:02:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:02:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:02:56 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":4,"course_id":13,"progress":24,"current_time":13}
[30-Nov-2025 09:02:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:16 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":4,"course_id":13,"progress":24,"current_time":13}
[30-Nov-2025 09:03:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":3,"current_time":5.754097}
[30-Nov-2025 09:03:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":3,"current_time":5.82}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":3,"current_time":6.025276}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":3,"current_time":6.031198}
[30-Nov-2025 09:03:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":8.97039}
[30-Nov-2025 09:03:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":9.241969}
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:55 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":9.501333}
[30-Nov-2025 09:03:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":9.768027}
[30-Nov-2025 09:03:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":10.041875}
[30-Nov-2025 09:03:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":10.297532}
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:56 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"current_time":10.570136}
[30-Nov-2025 09:03:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":10.841733}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":11.093794}
[30-Nov-2025 09:03:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":11.366672}
[30-Nov-2025 09:03:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":11.640272}
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":11.916836}
[30-Nov-2025 09:03:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":12.183153}
[30-Nov-2025 09:03:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":12.442827}
[30-Nov-2025 09:03:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":6,"current_time":12.71696}
[30-Nov-2025 09:03:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":12.968889}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.246467}
[30-Nov-2025 09:03:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.49983}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.5735}
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:03:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.5735}
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.739128}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.738318}
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":13.990225}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":14.176726}
[30-Nov-2025 09:04:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":14.176726}
[30-Nov-2025 09:04:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:04:01 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"current_time":14.176726}
[30-Nov-2025 09:04:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.040668,"completed":0}
[30-Nov-2025 09:11:47 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:11:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:11:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:11:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:11:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":8,"current_time":16.0135,"completed":0}
[30-Nov-2025 09:12:01 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":8,"url_lesson":"none"}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":8,"current_time":16.248291,"completed":0}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":8,"url_lesson":"none"}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":8,"current_time":16.271055,"completed":0}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":8,"url_lesson":"none"}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":8,"current_time":16.276092,"completed":0}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":8,"url_lesson":"none"}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":8,"current_time":16.445605,"completed":0}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":8,"url_lesson":"none"}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":12,"current_time":23.018628,"completed":0}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":12,"url_lesson":"none"}
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":12,"current_time":23.018647,"completed":0}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":12,"url_lesson":"none"}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":12,"current_time":23.018647,"completed":0}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":12,"url_lesson":"none"}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":12,"current_time":23.095186,"completed":0}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":12,"url_lesson":"none"}
[30-Nov-2025 09:12:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:12:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:12:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:12:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":32.61069,"completed":0}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":32,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":32.892962,"completed":0}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":32,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":32.892962,"completed":0}
[30-Nov-2025 09:13:11 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":32,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":32.914501,"completed":0}
[30-Nov-2025 09:13:12 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":32,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":33.003533,"completed":0}
[30-Nov-2025 09:13:12 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":33.268927,"completed":0}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":33.54993,"completed":0}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":33.805311,"completed":0}
[30-Nov-2025 09:13:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":17,"current_time":34.077684,"completed":0}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":17,"url_lesson":"none"}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.097596,"completed":0}
[30-Nov-2025 09:13:17 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":17,"current_time":34,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.355265,"completed":0}
[30-Nov-2025 09:13:18 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.643459,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.910629,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":38.175064,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.446929,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.722778,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.988868,"completed":0}
[30-Nov-2025 09:13:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":39.286198,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":39,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":39.563299,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":39,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":39.838564,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":40.112682,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":40,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":39,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":40.364542,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":40,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":40.636323,"completed":0}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":40,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":40.914325,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":40,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":41.184705,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":41.470641,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":41.733723,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":41,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":42.290742,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":42.564948,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":42.820474,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":41,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":21,"current_time":42.015056,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":21,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":43.13277,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":43.426113,"completed":0}
[30-Nov-2025 09:13:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":21,"current_time":41,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":43.692861,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":22,"current_time":43.974788,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":22,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.162265,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":44.567598,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":44.262615,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":44.89116,"completed":0}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.42943,"completed":0}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":28,"current_time":54.148141,"completed":0}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":28,"url_lesson":"none"}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":54,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":28,"current_time":54.44332,"completed":0}
[30-Nov-2025 09:13:31 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":28,"url_lesson":"none"}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":54,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":32,"current_time":62.273502,"completed":0}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":32,"url_lesson":"none"}
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":32,"current_time":62,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:13:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:13:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:13:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:38:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:38:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:38:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.802947,"completed":0}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.068609,"completed":0}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.680446,"completed":0}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.944556,"completed":0}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.552888,"completed":0}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":36.8408,"completed":0}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":36,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:39:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:39:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:39:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":13,"progress_percentage":0,"current_time":0,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 09:43:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:43:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.00248,"completed":0}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:44:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:44:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.753427,"completed":0}
[30-Nov-2025 09:44:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.006831,"completed":0}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.006831,"completed":0}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.006831,"completed":0}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:44:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:44:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.03051,"completed":0}
[30-Nov-2025 09:48:48 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.290995,"completed":0}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":7,"current_time":13.269207,"completed":0}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"url_lesson":"none"}
[30-Nov-2025 09:48:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:48:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":9,"current_time":17.376005,"completed":0}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":9,"url_lesson":"none"}
[30-Nov-2025 09:48:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:48:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:49:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:49:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:56:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:56:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.978661,"completed":0}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.252738,"completed":0}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.6777,"completed":0}
[30-Nov-2025 09:57:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:57:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.956677,"completed":0}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.573317,"completed":0}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.810485,"completed":0}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.075477,"completed":0}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":16,"current_time":31.138043,"completed":0}
[30-Nov-2025 09:57:45 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":16,"url_lesson":"none"}
[30-Nov-2025 09:57:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":31,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 09:57:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 09:57:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 09:57:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.854753,"completed":0}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.688931,"completed":0}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.967754,"completed":0}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:02:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:02:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":27.233011,"completed":0}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":14,"url_lesson":"none"}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:03:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:03:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:04:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:04:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.941467,"completed":0}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.216635,"completed":0}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.467097,"completed":0}
[30-Nov-2025 10:05:08 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.744981,"completed":0}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":10.016075,"completed":0}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.684118,"completed":0}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.952158,"completed":0}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:05:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.203397,"completed":0}
[30-Nov-2025 10:05:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:05:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:05:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:05:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.955982,"completed":0}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.196464,"completed":0}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:07:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:07:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:07:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":9,"current_time":17.593959,"completed":0}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":9,"url_lesson":"none"}
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":9,"current_time":17.593959,"completed":0}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":9,"url_lesson":"none"}
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":9,"current_time":17.593959,"completed":0}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":9,"url_lesson":"none"}
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:08:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:08:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:08:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:08:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:08:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:08:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:08:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:08:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:08 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:12 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:12 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.054873,"completed":0}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.319916,"completed":0}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:25 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:25 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:25 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:25 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:26 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:26 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:26 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:26 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:27 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:27 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:28 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:28 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:28 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:28 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:28 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:29 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:29 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:29 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:29 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:30 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:30 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:30 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:31 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:31 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:31 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:31 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:32 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:32 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:32 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:32 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.671771,"completed":0}
[30-Nov-2025 10:09:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:09:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.942108,"completed":0}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:33 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:34 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:34 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:34 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:35 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:35 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:35 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:35 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:36 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:36 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:37 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:37 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:37 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:37 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:38 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:38 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:38 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:38 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:39 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:39 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:39 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:39 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:39 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":13,"current_time":25.260234,"completed":0}
[30-Nov-2025 10:09:39 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":13,"url_lesson":"none"}
[30-Nov-2025 10:09:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:09:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:09:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:09:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:09:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         ROUND(AVG(CASE WHEN vp.completion_percentage > 0 THEN vp.completion_percentage ELSE 0 END)) as avg_progress       FROM lessons l       LEFT JOIN video_progress vp ON l.lesson_id = vp.video_id AND vp.student_id = ?       WHERE l.course_id = ?     
[30-Nov-2025 10:09:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:09:40 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Table 'twpurnyc_panadite_DB.lessons' doesn't exist
[30-Nov-2025 10:10:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:46 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:52 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:52 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:53 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:53 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:53 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:54 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:54 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:54 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:54 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:55 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:55 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:55 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:55 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:56 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:56 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:56 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:57 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:57 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:57 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:57 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:58 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:58 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:58 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:58 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:59 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:59 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:10:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:10:59 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:10:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:10:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:00 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:00 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:00 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:00 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:01 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:01 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:01 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:01 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:02 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:02 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.823489,"completed":0}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:02 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.096328,"completed":0}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:02 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:02 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:03 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:03 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:03 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:03 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:03 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:04 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:04 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:04 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:05 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:05 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:05 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:05 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:06 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:06 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:06 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:07 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:07 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:07 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:07 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:08 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:08 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:08 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:08 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:09 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:09 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:09 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:10 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:10 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:10 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:10 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:11 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:11 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:11 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:11 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:12 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:12 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:12 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.639584,"completed":0}
[30-Nov-2025 10:11:12 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:11:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.791481,"completed":0}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:13 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:14 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:15 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:16 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:17 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:18 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:19 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:20 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:21 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:22 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.521665,"completed":0}
[30-Nov-2025 10:11:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:11:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.780057,"completed":0}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:23 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.381354,"completed":0}
[30-Nov-2025 10:11:23 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:11:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:11:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:11:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:11:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.progress_percentage > 0 THEN vp.progress_percentage ELSE 0 END), 0) as avg_progress       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:11:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:11:24 Europe/Berlin] ❌ DATABASE ERROR: Prepare failed - Unknown column 'vp.progress_percentage' in 'field list'
[30-Nov-2025 10:13:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.863986,"completed":0}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.14084,"completed":0}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.620182,"completed":0}
[30-Nov-2025 10:13:26 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:13:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.887472,"completed":0}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.300374,"completed":0}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.320387,"completed":0}
[30-Nov-2025 10:14:04 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:14:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.320387,"completed":0}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.300387,"completed":0}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":22.300387,"completed":0}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":13,"current_time":26.100387,"completed":0}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":13,"url_lesson":"none"}
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":26.709176,"completed":0}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":14,"url_lesson":"none"}
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":26,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.72864,"completed":0}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:14:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.728658,"completed":0}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.728658,"completed":0}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":16,"current_time":30.975312,"completed":0}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":16,"url_lesson":"none"}
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:14:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:14:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:14:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:14:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:14:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.974203,"completed":0}
[30-Nov-2025 10:15:39 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.974203,"completed":0}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.250731,"completed":0}
[30-Nov-2025 10:15:39 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.250731,"completed":0}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.547488,"completed":0}
[30-Nov-2025 10:15:48 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.547488,"completed":0}
[30-Nov-2025 10:15:48 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:15:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.820152,"completed":0}
[30-Nov-2025 10:15:49 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.820152,"completed":0}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":21.700247,"completed":0}
[30-Nov-2025 10:15:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":21.700247,"completed":0}
[30-Nov-2025 10:15:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:15:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:15:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:15:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:15:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:15:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.02729,"completed":0}
[30-Nov-2025 10:25:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.02729,"completed":0}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.295672,"completed":0}
[30-Nov-2025 10:25:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.295672,"completed":0}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:25:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:25:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:25:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.787411,"completed":0}
[30-Nov-2025 10:26:02 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.787411,"completed":0}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.975424,"completed":0}
[30-Nov-2025 10:26:02 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.975424,"completed":0}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":26.968328,"completed":0}
[30-Nov-2025 10:26:13 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":26.968328,"completed":0}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":14,"url_lesson":"none"}
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":26,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":27.196685,"completed":0}
[30-Nov-2025 10:26:13 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":27.196685,"completed":0}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":14,"url_lesson":"none"}
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":27.446203,"completed":0}
[30-Nov-2025 10:26:15 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":14,"current_time":27.446203,"completed":0}
[30-Nov-2025 10:26:15 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":14,"url_lesson":"none"}
[30-Nov-2025 10:26:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:26:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:26:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:26:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:26:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.889205,"completed":0}
[30-Nov-2025 10:29:25 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.889205,"completed":0}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.145771,"completed":0}
[30-Nov-2025 10:29:25 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.145771,"completed":0}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.64532,"completed":0}
[30-Nov-2025 10:29:35 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.64532,"completed":0}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.910673,"completed":0}
[30-Nov-2025 10:29:35 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.910673,"completed":0}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.349467,"completed":0}
[30-Nov-2025 10:29:45 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.349467,"completed":0}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.620654,"completed":0}
[30-Nov-2025 10:29:45 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.620654,"completed":0}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.15075,"completed":0}
[30-Nov-2025 10:29:55 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.15075,"completed":0}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.425698,"completed":0}
[30-Nov-2025 10:29:55 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.425698,"completed":0}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:29:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:29:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:29:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:29:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":47.876589,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":47.876589,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":47,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.126996,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.126996,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.400478,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.400478,"completed":0}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":30,"current_time":57.71086,"completed":0}
[30-Nov-2025 10:30:14 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":30,"current_time":57.71086,"completed":0}
[30-Nov-2025 10:30:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":30,"url_lesson":"none"}
[30-Nov-2025 10:30:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":30,"current_time":57,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":30,"current_time":57.962602,"completed":0}
[30-Nov-2025 10:30:15 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":30,"current_time":57.962602,"completed":0}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":30,"url_lesson":"none"}
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":30,"current_time":57,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":35,"current_time":67.517875,"completed":0}
[30-Nov-2025 10:30:24 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":35,"current_time":67.517875,"completed":0}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":35,"url_lesson":"none"}
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":35,"current_time":67,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":35,"current_time":67.785148,"completed":0}
[30-Nov-2025 10:30:24 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":35,"current_time":67.785148,"completed":0}
[30-Nov-2025 10:30:24 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":35,"url_lesson":"none"}
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":35,"current_time":67,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":77.255397,"completed":0}
[30-Nov-2025 10:30:34 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":77.255397,"completed":0}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":77,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":77.535037,"completed":0}
[30-Nov-2025 10:30:34 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":77.535037,"completed":0}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":77,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":41,"current_time":79.840763,"completed":0}
[30-Nov-2025 10:30:37 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":41,"current_time":79.840763,"completed":0}
[30-Nov-2025 10:30:37 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":41,"url_lesson":"none"}
[30-Nov-2025 10:30:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":41,"current_time":79,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:30:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:30:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:30:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:30:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:30:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":78,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":78,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":78,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":40,"current_time":78.51692323540676,"completed":0}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":40,"url_lesson":"none"}
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":40,"current_time":78,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":45,"current_time":87.352559,"completed":0}
[30-Nov-2025 10:36:32 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":45,"current_time":87.352559,"completed":0}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":45,"url_lesson":"none"}
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":45,"current_time":87,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":45,"current_time":87.609414,"completed":0}
[30-Nov-2025 10:36:32 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":45,"current_time":87.609414,"completed":0}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":45,"url_lesson":"none"}
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":45,"current_time":87,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":47,"current_time":92.014318,"completed":0}
[30-Nov-2025 10:36:36 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":47,"current_time":92.014318,"completed":0}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":47,"url_lesson":"none"}
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":47,"current_time":92,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:36:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:36:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:36:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:36:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:36:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:36:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:36:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:36:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:39:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:39:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:39:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:39:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:39:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:39:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:39:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:39:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.62,"completed":0}
[30-Nov-2025 10:40:08 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.62,"completed":0}
[30-Nov-2025 10:40:08 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":2,"url_lesson":"none"}
[30-Nov-2025 10:40:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.62,"completed":0}
[30-Nov-2025 10:40:19 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.62,"completed":0}
[30-Nov-2025 10:40:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":2,"url_lesson":"none"}
[30-Nov-2025 10:40:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.709094,"completed":0}
[30-Nov-2025 10:40:20 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.709094,"completed":0}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":2,"url_lesson":"none"}
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.722284,"completed":0}
[30-Nov-2025 10:40:20 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":2,"current_time":3.722284,"completed":0}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":2,"url_lesson":"none"}
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":7,"current_time":12.783936,"completed":0}
[30-Nov-2025 10:40:30 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":7,"current_time":12.783936,"completed":0}
[30-Nov-2025 10:40:30 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":7,"url_lesson":"none"}
[30-Nov-2025 10:40:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":12,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":20.701589,"completed":0}
[30-Nov-2025 10:40:41 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":20.701589,"completed":0}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":20.968313,"completed":0}
[30-Nov-2025 10:40:41 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":11,"current_time":20.968313,"completed":0}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":11,"url_lesson":"none"}
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.672125,"completed":0}
[30-Nov-2025 10:40:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.672125,"completed":0}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.983636,"completed":0}
[30-Nov-2025 10:40:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":29.983636,"completed":0}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:40:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:40:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:40:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.502104,"completed":0}
[30-Nov-2025 10:41:02 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.502104,"completed":0}
[30-Nov-2025 10:41:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 10:41:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.769302,"completed":0}
[30-Nov-2025 10:41:03 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":19,"current_time":37.769302,"completed":0}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":19,"url_lesson":"none"}
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.408716,"completed":0}
[30-Nov-2025 10:41:13 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.408716,"completed":0}
[30-Nov-2025 10:41:13 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 10:41:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.671055,"completed":0}
[30-Nov-2025 10:41:14 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":23,"current_time":45.671055,"completed":0}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":23,"url_lesson":"none"}
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.96,"completed":0}
[30-Nov-2025 10:41:19 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.96,"completed":0}
[30-Nov-2025 10:41:19 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 10:41:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":26,"current_time":51.064137,"completed":0}
[30-Nov-2025 10:41:28 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":26,"current_time":51.064137,"completed":0}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":26,"url_lesson":"none"}
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":26,"current_time":51,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":27,"current_time":52.967897,"completed":0}
[30-Nov-2025 10:41:30 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":27,"current_time":52.967897,"completed":0}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":27,"url_lesson":"none"}
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":27,"current_time":52,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:41:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:41:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:41:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 10:46:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 10:46:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 10:46:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 10:46:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(v.video_id) as total_videos,         COUNT(CASE WHEN vp.completed = 1 THEN 1 END) as completed_videos,         COALESCE(AVG(CASE           WHEN vp.completed = 1 THEN 100           WHEN vp.last_position > 0 AND v.duration > 0 THEN LEAST(100, (vp.last_position / v.duration) * 100)           ELSE 0         END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 10:46:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 10:46:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 10:46:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 85.7% (avg: 85.714285714286, completed: 5/7)
[30-Nov-2025 10:46:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":5,"avg_progress_percentage":85.71428571428571}
[30-Nov-2025 11:05:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:05:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:05:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:05:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:05:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:05:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:05:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:05:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.824711,"completed":0}
[30-Nov-2025 11:06:32 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":8.824711,"completed":0}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":8,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.082391,"completed":0}
[30-Nov-2025 11:06:32 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":5,"current_time":9.082391,"completed":0}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":5,"url_lesson":"none"}
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.739723,"completed":0}
[30-Nov-2025 11:06:42 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":18.739723,"completed":0}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.010095,"completed":0}
[30-Nov-2025 11:06:42 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.010095,"completed":0}
[30-Nov-2025 11:06:42 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 11:06:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.263106,"completed":0}
[30-Nov-2025 11:06:43 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":10,"current_time":19.263106,"completed":0}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":10,"url_lesson":"none"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.345363,"completed":0}
[30-Nov-2025 11:06:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.345363,"completed":0}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.599858,"completed":0}
[30-Nov-2025 11:06:52 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":15,"current_time":28.599858,"completed":0}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":15,"url_lesson":"none"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:06:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:06:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:06:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.050578,"completed":0}
[30-Nov-2025 11:07:02 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.050578,"completed":0}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.294203,"completed":0}
[30-Nov-2025 11:07:02 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":20,"current_time":38.294203,"completed":0}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":20,"url_lesson":"none"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":47.930637,"completed":0}
[30-Nov-2025 11:07:12 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":47.930637,"completed":0}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":47,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.209255,"completed":0}
[30-Nov-2025 11:07:12 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":25,"current_time":48.209255,"completed":0}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":25,"url_lesson":"none"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":29,"current_time":56.175837,"completed":0}
[30-Nov-2025 11:07:22 Europe/Berlin] 🚀 SAVE_PROGRESS ACTION CALLED with input: {"action":"save_progress","video_id":29,"lesson_id":29,"course_id":13,"student_id":15,"progress_percentage":29,"current_time":56.175837,"completed":0}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔄 YOUTUBE PROGRESS SAVE: {"lesson_id":29,"course_id":13,"progress":29,"url_lesson":"none"}
[30-Nov-2025 11:07:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":29,"current_time":56,"completed":0,"completed_raw":0,"student_id":15}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:07:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:07:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:07:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:14:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:14:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:14:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:14:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:14:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:14:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:14:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:14:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:16:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:16:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:16:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:16:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:16:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:16:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:16:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:16:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:47:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:47:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:47:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:47:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:47:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:47:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:47:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:47:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:48:03 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:48:03 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:48:03 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:48:03 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:48:03 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:48:03 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:48:03 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:48:03 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 11:54:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 11:54:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 11:54:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 11:54:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 11:54:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 11:54:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 11:54:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 11:54:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 12:08:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:08:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:08:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:08:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:08:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:08:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:08:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 12:08:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 12:14:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:14:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:14:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:14:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:14:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:14:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:14:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8% (avg: 8, completed: 5/7)
[30-Nov-2025 12:14:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.000000"}
[30-Nov-2025 12:14:52 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:14:52 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:14:52 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:14:52 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:14:52 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:14:52 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:14:52 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:14:52 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:20:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:20:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:20:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:20:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:20:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:20:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:20:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:20:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:21:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:21:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:21:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:21:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:21:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:21:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:21:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:21:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:30:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:30:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:30:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:30:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:30:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:30:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:30:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:30:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:36:58 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:36:58 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:36:58 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:36:58 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:36:58 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:36:58 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:36:58 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:36:58 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:37:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":2,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":8,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":14,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":20,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":26,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":31,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":37,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:37:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:38:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:40:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:40:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:40:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:40:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":0,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":42,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:41:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:41:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:41:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:41:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:41:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:41:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:41:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:41:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":1,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:41:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":7,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":13,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":19,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":25,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":27,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:42:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":28,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":28,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":33,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":39,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":45,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":51,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":57,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":63,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:43:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:44:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:45:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:46:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":0,"course_id":0,"progress_percentage":0,"current_time":66,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:47:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:47:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:47:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:47:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:47:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:47:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:47:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:47:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":2,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:47:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":11,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":20,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":29,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":29,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":29,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":30,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":30,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":30,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":0,"progress_percentage":0,"current_time":30,"completed":0,"completed_raw":"NOT_SET","student_id":15}
[30-Nov-2025 12:51:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:51:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:51:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:51:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:51:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:51:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:51:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:51:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:54:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:54:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:54:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:54:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:54:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:54:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:54:07 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:54:07 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:57:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 12:57:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 12:57:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 12:57:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 12:57:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 12:57:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 12:57:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 7.9% (avg: 7.857143, completed: 5/7)
[30-Nov-2025 12:57:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"7.857143"}
[30-Nov-2025 12:57:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:57:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:58:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 12:59:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:00:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:00:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:00:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:00:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:00:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:00:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:00:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.6% (avg: 9.571429, completed: 5/7)
[30-Nov-2025 13:00:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.571429"}
[30-Nov-2025 13:00:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:00:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":24,"current_time":47,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":29,"current_time":56,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:01:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":34,"current_time":65,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:02:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":35,"current_time":68,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:02:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":35,"current_time":68,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:03:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:03:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:03:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:03:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:03:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:03:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:03:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 12.9% (avg: 12.857143, completed: 5/7)
[30-Nov-2025 13:03:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"12.857143"}
[30-Nov-2025 13:04:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:04:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:04:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:04:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:04:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:04:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:04:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:04:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.1% (avg: 8.142857, completed: 5/7)
[30-Nov-2025 13:04:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.142857"}
[30-Nov-2025 13:04:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:04:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:04:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:04:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:04:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:04:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:05:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:05:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:05:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:05:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:05:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:05:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:05:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:05:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:06:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:06:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:06:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:06:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:06:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:06:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:06:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:06:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:06:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.9% (avg: 8.857143, completed: 5/7)
[30-Nov-2025 13:06:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.857143"}
[30-Nov-2025 13:06:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:06:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:06:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:06:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:06:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:06:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:06:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:06:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:07:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:07:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:09:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:09:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:09:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:09:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:09:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:09:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:09:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.7% (avg: 9.714286, completed: 5/7)
[30-Nov-2025 13:09:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.714286"}
[30-Nov-2025 13:10:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:10:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:10:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:10:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:10:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:10:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:10:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:10:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:10:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:10:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:11:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:11:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:11:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:11:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:11:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:11:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:11:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:11:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:11:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:11:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:13:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:13:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:13:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:13:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:13:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:13:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:13:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.4% (avg: 9.428571, completed: 5/7)
[30-Nov-2025 13:13:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.428571"}
[30-Nov-2025 13:13:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:14:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:15:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:15:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:15:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:15:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:15:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:15:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:15:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:15:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:15:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.7% (avg: 9.714286, completed: 5/7)
[30-Nov-2025 13:15:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.714286"}
[30-Nov-2025 13:15:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:15:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:16:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:16:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:17:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:17:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:17:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:17:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:18:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:18:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG: {"student_id":15,"course_id":1,"total_lessons":2,"completed_lessons":0,"avg_progress":0,"raw_course_progress":{"total_lessons":2,"completed_lessons":0,"avg_progress":"0.000000"}}
[30-Nov-2025 13:21:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:21:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:21:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:21:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:21:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:21:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:21:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9% (avg: 9, completed: 5/7)
[30-Nov-2025 13:21:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.000000"}
[30-Nov-2025 13:21:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:21:50 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:21:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:00 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:08 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:18 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:28 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:37 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:45 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:22:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:22:55 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:23:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:04 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:23:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:13 Europe/Berlin] PHP Fatal error:  Uncaught Error: Call to a member function bind_param() on bool in /home/twpurnyc/public_html/student/ajax/update_video_progress.php:210
Stack trace:
#0 {main}
  thrown in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 210
[30-Nov-2025 13:23:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:23:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:23:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:23:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:23:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:23:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:23:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.7% (avg: 9.714286, completed: 5/7)
[30-Nov-2025 13:23:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.714286"}
[30-Nov-2025 13:23:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:23:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:23:27 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:23:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:23:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:23:36 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:23:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:23:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:23:45 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:23:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:23:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:23:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:23:54 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:04 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:13 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:22 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:31 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:40 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:24:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:24:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:24:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:24:49 Europe/Berlin] PHP Notice:  Undefined variable: avg_progress in /home/twpurnyc/public_html/student/ajax/update_video_progress.php on line 269
[30-Nov-2025 13:25:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:25:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:25:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:25:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:25:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:25:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:25:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.1% (avg: 9.142857, completed: 5/7)
[30-Nov-2025 13:25:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.142857"}
[30-Nov-2025 13:25:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:25:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:25:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:25:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:25:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:25:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:25:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:25:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:25:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:25:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:25:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:25:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:26:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:26:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:26:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:27:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:27:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:27:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:27:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:27:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:27:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:27:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.1% (avg: 9.142857, completed: 5/7)
[30-Nov-2025 13:27:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.142857"}
[30-Nov-2025 13:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:27:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:27:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:27:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:27:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:27:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:27:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:27:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:27:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:27:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":24,"current_time":46,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":27,"current_time":52,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:28:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:28:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:28:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:41:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:41:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:41:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:41:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:41:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:41:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:41:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 11.9% (avg: 11.857143, completed: 5/7)
[30-Nov-2025 13:41:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"11.857143"}
[30-Nov-2025 13:41:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:41:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:41:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:42:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:42:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:42:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:43:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:43:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:43:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:44:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:44:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:44:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:49:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:49:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:49:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:49:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:49:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:49:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:49:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.7% (avg: 8.714286, completed: 5/7)
[30-Nov-2025 13:49:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.714286"}
[30-Nov-2025 13:50:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:50:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:50:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:50:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:51:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:51:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:51:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:51:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:51:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:51:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:51:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:51:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:51:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:53:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:53:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:53:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:53:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:53:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:53:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:53:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.7% (avg: 8.714286, completed: 5/7)
[30-Nov-2025 13:53:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.714286"}
[30-Nov-2025 13:54:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:54:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:54:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:54:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:55:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:55:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:55:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:55:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:55:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:55:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:55:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:55:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:55:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:59:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 13:59:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 13:59:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 13:59:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 13:59:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 13:59:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 13:59:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9% (avg: 9, completed: 5/7)
[30-Nov-2025 13:59:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.000000"}
[30-Nov-2025 13:59:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:59:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:59:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 13:59:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 13:59:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 13:59:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:00:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:00:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:00:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:01:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:01:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:01:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:02:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:02:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:02:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:02:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:02:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:02:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:02:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.6% (avg: 9.571429, completed: 5/7)
[30-Nov-2025 14:02:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.571429"}
[30-Nov-2025 14:05:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:05:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:05:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:05:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:05:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:05:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:05:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.6% (avg: 9.571429, completed: 5/7)
[30-Nov-2025 14:05:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.571429"}
[30-Nov-2025 14:05:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:05:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:05:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:05:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:05:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:05:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:05:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:05:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:05:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:05:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:05:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:05:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:06:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:06:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:06:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:06:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:06:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:06:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:06:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:06:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:06:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:06:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:06:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:06:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:06:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:06:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:06:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:07:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:07:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:07:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:09:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:09:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:09:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:09:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:09:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:09:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:09:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.9% (avg: 8.857143, completed: 5/7)
[30-Nov-2025 14:09:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.857143"}
[30-Nov-2025 14:09:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:09:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:09:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:09:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:09:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:09:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:09:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:09:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:09:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:09:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:09:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:09:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:10:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:10:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:10:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:15:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:15:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:15:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:15:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:15:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:15:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:15:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 9.7% (avg: 9.714286, completed: 5/7)
[30-Nov-2025 14:15:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"9.714286"}
[30-Nov-2025 14:15:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:15:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:15:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:15:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:15:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:15:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:15:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:15:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:15:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:15:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:15:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:15:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:15:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 8.3% (avg: 8.285714, completed: 5/7)
[30-Nov-2025 14:15:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"8.285714"}
[30-Nov-2025 14:16:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:16:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:16:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:16:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:16:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:16:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:16:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:16:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:16:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:16:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:16:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:16:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:16:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:16:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:22:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:22:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:22:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:22:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:22:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:22:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:22:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:22:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:22:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:22:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:22:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:23:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:23:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:23:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:23:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:23:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:23:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:23:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:23:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:23:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:23:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:23:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:23:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:23:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:23:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:23:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:23:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:23:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:23:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:23:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:23:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:23:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:23:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:24:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:24:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:24:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:24:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:24:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:24:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:24:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:24:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:24:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:24:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:24:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 14:24:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:24:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:24:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:24:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:24:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:24:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:24:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.7% (avg: 14.714286, completed: 6/7)
[30-Nov-2025 14:24:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.714286"}
[30-Nov-2025 14:24:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:24:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:24:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:24:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:24:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:24:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:24:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:24:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:24:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:24:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:24:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:24:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":24,"current_time":47,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":29,"current_time":56,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":34,"current_time":65,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":38,"current_time":74,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:25:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":43,"current_time":83,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:25:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:25:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:31:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:31:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:31:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:31:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:31:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:31:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:31:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 20.4% (avg: 20.428571, completed: 6/7)
[30-Nov-2025 14:31:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"20.428571"}
[30-Nov-2025 14:31:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:31:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:31:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:31:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:31:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:31:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:31:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:31:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:31:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:32:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:32:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:32:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:32:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:32:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:32:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:32:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:32:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:32:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:32:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:32:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:32:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:32:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:32:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:32:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:33:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:33:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:33:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:33:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:33:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:33:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:34:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:34:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:34:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:35:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:35:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:35:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:35:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:35:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:35:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.3% (avg: 15.285714, completed: 6/7)
[30-Nov-2025 14:35:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"15.285714"}
[30-Nov-2025 14:35:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:35:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:35:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:35:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":16,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":20,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":21,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:36:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:36:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:36:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:37:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:37:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:37:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:38:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:38:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:38:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":43,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:39:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:39:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:39:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:39:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:39:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:39:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 14:39:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 14:39:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:39:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:39:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:40:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:40:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:40:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:41:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:41:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:41:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:41:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:41:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:41:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:41:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:41:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:41:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:41:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:41:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:41:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:42:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:42:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:42:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:42:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:42:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:42:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 6/7)
[30-Nov-2025 14:42:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"16.142857"}
[30-Nov-2025 14:42:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:42:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:42:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:42:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:43:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:43:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:43:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:44:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:44:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:44:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:44:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:44:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:44:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:44:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:44:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:44:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:45:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:45:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:45:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:46:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:46:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:46:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:47:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:47:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:47:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:48:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:48:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:48:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:49:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:49:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:49:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:50:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:50:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:50:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:51:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:51:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:51:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:52:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:52:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:52:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:52:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:52:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:52:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:52:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:52:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:52:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:52:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:52:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:52:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:52:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 14:52:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 14:52:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 14:53:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 14:53:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 14:53:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 14:53:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 14:53:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 14:53:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 14:53:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.4% (avg: 15.428571, completed: 6/7)
[30-Nov-2025 14:53:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"15.428571"}
[30-Nov-2025 14:53:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 14:53:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 14:53:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 15:07:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:07:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:07:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:07:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:07:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:07:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:07:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.3% (avg: 1.285714, completed: 5/7)
[30-Nov-2025 15:07:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.285714"}
[30-Nov-2025 15:07:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:07:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:07:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:07:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:07:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:07:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:07:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.3% (avg: 1.285714, completed: 5/7)
[30-Nov-2025 15:07:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.285714"}
[30-Nov-2025 15:08:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:08:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:08:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:08:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:08:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:08:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:08:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:08:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:08:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:08:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.3% (avg: 1.285714, completed: 5/7)
[30-Nov-2025 15:08:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.285714"}
[30-Nov-2025 15:13:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:13:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:13:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:13:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:13:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:13:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:13:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.4% (avg: 1.428571, completed: 5/7)
[30-Nov-2025 15:13:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.428571"}
[30-Nov-2025 15:13:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:13:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:13:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:13:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:13:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:13:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:13:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.4% (avg: 1.428571, completed: 5/7)
[30-Nov-2025 15:13:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.428571"}
[30-Nov-2025 15:13:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:13:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:13:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:13:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:13:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:13:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:14:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:14:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:14:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:15:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:15:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:15:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:16:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:16:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:16:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:16:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:16:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:16:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:17:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:17:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:17:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:18:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:18:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:18:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:19:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:19:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:19:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:19:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:19:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:19:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:19:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:19:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:19:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:19:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:19:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:19:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:19:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.7% (avg: 1.714286, completed: 5/7)
[30-Nov-2025 15:19:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.714286"}
[30-Nov-2025 15:20:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:20:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:20:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:20:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:20:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:20:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:20:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:20:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:20:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:20:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 2.4% (avg: 2.428571, completed: 5/7)
[30-Nov-2025 15:20:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"2.428571"}
[30-Nov-2025 15:23:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:23:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:23:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:23:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:23:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:23:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:23:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 2.3% (avg: 2.285714, completed: 5/7)
[30-Nov-2025 15:23:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"2.285714"}
[30-Nov-2025 15:24:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:24:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:24:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:24:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:24:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:24:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:24:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 2.3% (avg: 2.285714, completed: 5/7)
[30-Nov-2025 15:24:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"2.285714"}
[30-Nov-2025 15:24:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:24:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:24:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:24:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:25:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:25:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:25:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:26:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:26:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:26:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:27:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:27:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:27:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:28:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:28:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:29:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:29:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:29:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:30:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:30:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:30:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:31:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:31:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:31:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:32:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:32:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:32:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:33:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:33:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:33:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:33:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:33:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:33:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:33:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:33:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:33:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:33:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:33:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:33:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:33:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.1% (avg: 1.142857, completed: 5/7)
[30-Nov-2025 15:33:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.142857"}
[30-Nov-2025 15:34:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:34:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:34:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:34:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:35:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:35:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:35:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:36:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:36:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:36:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:37:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:37:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:37:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:38:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:38:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:38:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:39:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:39:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:39:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:40:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:40:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:40:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:41:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:41:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:41:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:42:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:42:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:42:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:43:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:43:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:43:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:43:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:43:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:43:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:43:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:43:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:43:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:43:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:43:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:43:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:43:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:43:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:43:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:43:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.6% (avg: 1.571429, completed: 5/7)
[30-Nov-2025 15:43:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.571429"}
[30-Nov-2025 15:44:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":16,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:44:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:44:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:44:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:45:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:45:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:45:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":21,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:46:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:46:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:46:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:47:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:47:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:47:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":24,"current_time":46,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:48:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:48:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:48:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:48:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:48:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:48:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.7% (avg: 3.714286, completed: 5/7)
[30-Nov-2025 15:48:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.714286"}
[30-Nov-2025 15:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:48:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:48:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:49:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:49:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:49:45 Europe/Berlin] PHP Warning:  mysqli::__construct(): (HY000/1040): Too many connections in /home/twpurnyc/public_html/config/db_connect.php on line 85
[30-Nov-2025 15:49:45 Europe/Berlin] Connection Error: MySQLi Connection failed: Too many connections
[30-Nov-2025 15:49:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:59:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:59:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:59:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:59:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:59:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:59:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.3% (avg: 1.285714, completed: 5/7)
[30-Nov-2025 15:59:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.285714"}
[30-Nov-2025 15:59:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 15:59:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 15:59:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 15:59:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 15:59:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 15:59:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 15:59:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.3% (avg: 1.285714, completed: 5/7)
[30-Nov-2025 15:59:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.285714"}
[30-Nov-2025 15:59:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 15:59:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 15:59:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 15:59:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:00:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:00:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:00:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:01:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:01:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:01:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:02:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:02:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:02:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:03:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:03:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:03:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:04:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:04:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:04:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:05:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:05:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:05:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:06:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:06:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:06:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:07:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:07:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:07:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:08:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:08:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:08:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:17 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:09:17 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:09:17 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:09:17 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:09:17 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:09:17 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:09:17 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 1.7% (avg: 1.714286, completed: 5/7)
[30-Nov-2025 16:09:17 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"1.714286"}
[30-Nov-2025 16:09:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:09:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:09:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:09:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:10:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:10:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:10:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:11:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:11:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:11:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:12:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:12:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:12:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:12:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:12:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:12:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:12:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:12:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:12:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:13:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:13:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:14:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:14:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:14:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:14:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:14:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:14:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 0.9% (avg: 0.857143, completed: 5/7)
[30-Nov-2025 16:14:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"0.857143"}
[30-Nov-2025 16:14:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:14:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:14:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:14:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":33,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":20,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:15:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:15:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:15:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:16:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:16:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:16:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:17:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:17:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:17:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":25,"current_time":49,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:18:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:18:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:18:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:18:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:18:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:18:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:18:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:18:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:18:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.7% (avg: 3.714286, completed: 5/7)
[30-Nov-2025 16:18:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.714286"}
[30-Nov-2025 16:19:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:19:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:19:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:19:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:19:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:19:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:19:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.9% (avg: 3.857143, completed: 5/7)
[30-Nov-2025 16:19:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.857143"}
[30-Nov-2025 16:25:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:25:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:25:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:25:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:25:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:25:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:25:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.9% (avg: 3.857143, completed: 5/7)
[30-Nov-2025 16:25:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.857143"}
[30-Nov-2025 16:26:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:26:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":16,"current_time":31,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:26:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:26:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":18,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":37,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":21,"current_time":40,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:27:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:27:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:28:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:28:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 16:29:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 16:29:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 16:29:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:29:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:29:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:29:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:29:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:29:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:29:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.4% (avg: 3.428571, completed: 5/7)
[30-Nov-2025 16:29:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.428571"}
[30-Nov-2025 16:40:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:40:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:40:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:40:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:40:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:40:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:40:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.4% (avg: 3.428571, completed: 5/7)
[30-Nov-2025 16:40:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.428571"}
[30-Nov-2025 16:50:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:50:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:50:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:50:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:50:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:50:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:50:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.4% (avg: 3.428571, completed: 5/7)
[30-Nov-2025 16:50:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.428571"}
[30-Nov-2025 16:50:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:50:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:50:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:50:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:50:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:50:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:50:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 3.4% (avg: 3.428571, completed: 5/7)
[30-Nov-2025 16:50:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"3.428571"}
[30-Nov-2025 16:50:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 16:50:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 16:50:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 16:50:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 16:50:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 16:50:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 16:50:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:50:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:50:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:50:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:50:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:50:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:50:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 16:50:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 16:50:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 16:50:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 16:50:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 16:51:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:51:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:51:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:51:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:51:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:51:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:51:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 11.1% (avg: 11.142857, completed: 5/7)
[30-Nov-2025 16:51:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"11.142857"}
[30-Nov-2025 16:51:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:51:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:51:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:51:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:51:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:51:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:51:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 11.1% (avg: 11.142857, completed: 5/7)
[30-Nov-2025 16:51:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"11.142857"}
[30-Nov-2025 16:55:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 16:55:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 16:55:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 16:55:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 16:55:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 16:55:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 16:55:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 11.1% (avg: 11.142857, completed: 5/7)
[30-Nov-2025 16:55:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"11.142857"}
[30-Nov-2025 16:56:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 16:56:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 16:56:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 16:56:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 16:56:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 16:56:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:00:13 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:00:13 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:00:13 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:00:13 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:00:13 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:00:13 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:00:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:00:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:00:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:00:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:00:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:04:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:04:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:04:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:04:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:04:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:04:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:04:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:04:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:04:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:04:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:04:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:04:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:04:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:04:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:04:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:04:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:04:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:04:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:04:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:04:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:04:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:04:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:04:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:04:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:04:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:04:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:04:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:04:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:04:49 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:04:49 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:04:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:04:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:04:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:15:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:15:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:15:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:15:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:15:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:15:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:15:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:15:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:15:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:15:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:15:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:15:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:15:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:15:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:15:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:15:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:15:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:15:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.4% (avg: 17.428571, completed: 6/7)
[30-Nov-2025 17:15:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.428571"}
[30-Nov-2025 17:16:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":77,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":83,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":89,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":96,"current_time":46,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:16:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:16:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:16:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:16:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:17:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:17:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:17:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:18:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:18:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:18:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:19:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:19:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:19:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:20:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:20:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:20:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:20:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":98,"current_time":47,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:20:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":100,"current_time":48,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:20:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:20:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:21:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:21:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:21:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:21:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:21:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:21:02 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 28.6% (avg: 28.571429, completed: 7/7)
[30-Nov-2025 17:21:02 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"7","avg_progress_percentage":"28.571429"}
[30-Nov-2025 17:21:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:21:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:21:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:21:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:21:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:21:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:21:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 28.6% (avg: 28.571429, completed: 7/7)
[30-Nov-2025 17:21:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"7","avg_progress_percentage":"28.571429"}
[30-Nov-2025 17:21:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:21:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:21:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:21:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:22:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:22:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:22:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:22:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:22:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:22:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.6% (avg: 15.571429, completed: 6/7)
[30-Nov-2025 17:22:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"15.571429"}
[30-Nov-2025 17:22:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:22:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:22:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:22:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:22:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:22:56 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:22:56 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:22:56 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:22:56 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:22:56 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.4% (avg: 14.428571, completed: 6/7)
[30-Nov-2025 17:22:56 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.428571"}
[30-Nov-2025 17:25:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:25:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:25:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:25:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:25:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:25:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:25:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.4% (avg: 14.428571, completed: 6/7)
[30-Nov-2025 17:25:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.428571"}
[30-Nov-2025 17:25:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:25:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:25:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:25:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:25:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:25:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:25:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:25:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:25:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:25:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:25:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:25:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:26:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:26:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:26:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:26:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:26:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:26:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:26:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:26:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:26:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:26:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:26:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:26:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:26:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:26:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:26:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:26:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.4% (avg: 14.428571, completed: 6/7)
[30-Nov-2025 17:26:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.428571"}
[30-Nov-2025 17:26:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:26:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:26:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:26:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":4,"lesson_id":4,"course_id":13,"progress_percentage":100,"current_time":55,"completed":1,"completed_raw":"1","student_id":15}
[30-Nov-2025 17:26:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 6, Overall: 86%
[30-Nov-2025 17:26:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 6 completed videos ÷ 7 total lessons × 100 = 86%
[30-Nov-2025 17:29:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:29:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:29:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:29:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:29:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:29:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:29:12 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.4% (avg: 14.428571, completed: 6/7)
[30-Nov-2025 17:29:12 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.428571"}
[30-Nov-2025 17:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":9,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":11,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":12,"current_time":29,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":13,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":14,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":15,"current_time":38,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":17,"current_time":41,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":18,"current_time":44,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:30:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":19,"current_time":47,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:30:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:30:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":20,"current_time":50,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":22,"current_time":53,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":56,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:31:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:31:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:31:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:32:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:32:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:32:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:32:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:32:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:32:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:32:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:32:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:32:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:33:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:33:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:33:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":23,"current_time":58,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:34:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:34:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:34:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:34:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:34:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:34:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 17.6% (avg: 17.571429, completed: 6/7)
[30-Nov-2025 17:34:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"17.571429"}
[30-Nov-2025 17:34:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:34:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:34:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:34:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:35:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:35:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:35:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:36:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:36:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:36:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:38:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:38:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:38:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:38:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:38:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:38:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:38:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:38:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:38:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.6% (avg: 14.571429, completed: 6/7)
[30-Nov-2025 17:38:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.571429"}
[30-Nov-2025 17:39:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:39:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:39:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:39:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:40:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:40:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:40:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:41:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:41:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:41:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:41:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:41:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:41:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:44:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:44:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:44:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:44:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:44:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:44:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:44:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:44:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:44:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:44:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:44:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:44:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:45:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:45:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:45:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:45:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:45:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:45:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15% (avg: 15, completed: 6/7)
[30-Nov-2025 17:45:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"15.000000"}
[30-Nov-2025 17:45:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:45:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:45:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:45:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:45:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:45:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:45:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 14.9% (avg: 14.857143, completed: 6/7)
[30-Nov-2025 17:45:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"14.857143"}
[30-Nov-2025 17:45:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":2,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:45:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:45:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:45:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":4,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":6,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":7,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:46:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:46:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:46:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:47:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:47:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:47:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":1,"progress_percentage":8,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 17:48:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 17:48:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 17:48:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 17:48:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 17:48:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 17:48:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.4% (avg: 15.428571, completed: 6/7)
[30-Nov-2025 17:48:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"6","avg_progress_percentage":"15.428571"}
[30-Nov-2025 17:48:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:48:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:48:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:48:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:49:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:49:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:49:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:50:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:50:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:50:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:50:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:50:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:50:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:50:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:50:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:50:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:50:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:50:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:50:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:51:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:51:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:51:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:52:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:52:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:52:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:53:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:53:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:53:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:54:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:54:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:55:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:55:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:55:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:56:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:56:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:56:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:57:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:57:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:57:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:58:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:58:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:58:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 17:59:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 17:59:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 17:59:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:00:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:00:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:00:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:01:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:01:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:01:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:02:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:02:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:02:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:03:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:03:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:03:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:04:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:04:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:04:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:05:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:05:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:05:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:06:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:06:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:06:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:06:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:06:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:06:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:07:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:07:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:07:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:08:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:08:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:08:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:09:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:09:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:09:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:10:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:10:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:10:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:11:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:11:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:11:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:12:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:12:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:12:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:13:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:13:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:13:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:14:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:14:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:14:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:15:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:15:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:15:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:16:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:16:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:16:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:17:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:17:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:17:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:18:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:18:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:18:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:19:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:19:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:19:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:20:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:20:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:20:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:21:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:21:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:21:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:22:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:22:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:22:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:23:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:23:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:23:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:24:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:24:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:24:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:25:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:25:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:25:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:47:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 18:47:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 18:47:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 18:47:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 18:47:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 18:47:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 18:47:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.6% (avg: 15.571429, completed: 5/7)
[30-Nov-2025 18:47:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.571429"}
[30-Nov-2025 18:52:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 18:52:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 18:52:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 18:52:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 18:52:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 18:52:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 18:52:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.6% (avg: 15.571429, completed: 5/7)
[30-Nov-2025 18:52:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.571429"}
[30-Nov-2025 18:53:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:53:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:53:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:53:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":2,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:54:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:54:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:54:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:55:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:55:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:55:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:56:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:56:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:56:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:57:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:57:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:57:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:58:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:58:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:58:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 18:59:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 18:59:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 18:59:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:00:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:00:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:00:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:01:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:01:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:01:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:02:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:02:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:02:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:06:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:06:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:06:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:07:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:07:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:07:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:08:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:08:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:08:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:09:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:09:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:09:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:10:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:10:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:10:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:11:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:11:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:11:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:12:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:12:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:12:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:12:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:12:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:12:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:12:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:12:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:12:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:12:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:12:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:12:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:12:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:12:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:12:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:12:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:12:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:12:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:12:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.9% (avg: 15.857143, completed: 5/7)
[30-Nov-2025 19:12:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.857143"}
[30-Nov-2025 19:13:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:13:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:13:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:13:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":4,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:14:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:14:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:14:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:15:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:15:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:15:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:16:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:16:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:16:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:17:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:17:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:17:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:18:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:18:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:18:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:19:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:19:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:19:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:20:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:20:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:20:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:21:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:21:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:21:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:21:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:21:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:21:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:21:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:21:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:21:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:21:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:21:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:21:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:22:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:22:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:22:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:23:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:23:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:23:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:23:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:23:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:23:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:23:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:23:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:23:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:23:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:23:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:23:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:23:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:23:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:26:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:26:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:26:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:26:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:26:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:26:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:26:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:26:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:27:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":1,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":2,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":3,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":4,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:27:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:27:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:27:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":27,"lesson_id":27,"course_id":1,"progress_percentage":5,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[30-Nov-2025 19:28:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[30-Nov-2025 19:28:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[30-Nov-2025 19:28:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:28:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:28:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:28:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:28:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:28:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:28:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:28:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:34:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:34:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:34:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:34:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:34:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:34:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:34:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:34:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:35:14 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:35:14 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:35:14 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:35:14 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:35:14 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:35:14 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:35:14 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:35:14 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:39:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:39:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:39:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:39:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:39:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:39:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:39:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:39:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:39:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:39:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:39:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:39:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:39:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:39:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:39:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:39:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:40:01 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:40:01 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:40:01 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:40:01 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:40:01 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:40:01 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:40:01 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:40:01 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:40:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:40:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:40:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:40:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:40:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:40:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:40:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:40:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:43:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:43:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:43:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:43:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:43:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:43:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:43:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:43:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:43:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:43:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:43:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:43:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:43:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:43:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:43:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:43:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:43:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:43:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:43:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:43:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:43:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:43:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:43:31 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:43:31 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:44:02 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:44:02 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:44:02 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:44:02 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:44:02 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:44:02 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:44:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:44:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:47:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:47:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:47:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:47:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:47:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:47:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:47:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:47:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:47:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:47:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:47:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:47:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:47:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:47:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:47:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:47:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:47:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:47:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:47:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:47:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:47:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:47:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:47:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:48:35 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:48:35 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:48:35 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:48:35 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:48:35 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:48:35 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:48:35 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:48:35 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:48:40 Europe/Berlin] PHP Warning:  session_start(): open(C:\Users\user\Downloads\xamppfile\tmp/sess_k687v9gliqpbg961ujt2qhnhcr, O_RDWR) failed: No such file or directory (2) in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 11
[30-Nov-2025 19:48:40 Europe/Berlin] PHP Warning:  session_start(): Failed to read session data: files (path: C:\Users\user\Downloads\xamppfile\tmp) in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 11
[30-Nov-2025 19:48:40 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:48:40 Europe/Berlin] [AJAX DEBUG] Config loaded
[30-Nov-2025 19:48:40 Europe/Berlin] [AJAX DEBUG] Functions loaded
[30-Nov-2025 19:48:40 Europe/Berlin] PHP Warning:  require_once(../includes/id_encryption.php): failed to open stream: No such file or directory in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 30
[30-Nov-2025 19:48:40 Europe/Berlin] PHP Fatal error:  require_once(): Failed opening required '../includes/id_encryption.php' (include_path='C:\Users\user\Downloads\xamppfile\php\PEAR') in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 30
[30-Nov-2025 19:48:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:48:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:48:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:48:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:48:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:48:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:48:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:48:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:52:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:52:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:52:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:52:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:52:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:52:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:52:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:52:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:52:32 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:52:32 Europe/Berlin] [AJAX DEBUG] Config loaded
[30-Nov-2025 19:52:32 Europe/Berlin] [AJAX DEBUG] Functions loaded
[30-Nov-2025 19:52:32 Europe/Berlin] PHP Warning:  require_once(../includes/id_encryption.php): failed to open stream: No such file or directory in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:52:32 Europe/Berlin] PHP Fatal error:  require_once(): Failed opening required '../includes/id_encryption.php' (include_path='C:\Users\user\Downloads\xamppfile\php\PEAR') in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:52:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:52:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:52:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:52:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:52:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:52:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:52:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:52:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:52:42 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:52:42 Europe/Berlin] [AJAX DEBUG] Config loaded
[30-Nov-2025 19:52:42 Europe/Berlin] [AJAX DEBUG] Functions loaded
[30-Nov-2025 19:52:42 Europe/Berlin] PHP Warning:  require_once(../includes/id_encryption.php): failed to open stream: No such file or directory in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:52:42 Europe/Berlin] PHP Fatal error:  require_once(): Failed opening required '../includes/id_encryption.php' (include_path='C:\Users\user\Downloads\xamppfile\php\PEAR') in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:52:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:52:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:52:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:52:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:52:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:52:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:52:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:52:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:53:20 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:53:20 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:53:20 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:53:20 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:53:20 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:53:20 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:53:20 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:53:20 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:53:26 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:53:26 Europe/Berlin] [AJAX DEBUG] Config loaded
[30-Nov-2025 19:53:26 Europe/Berlin] [AJAX DEBUG] Functions loaded
[30-Nov-2025 19:53:26 Europe/Berlin] PHP Warning:  require_once(../includes/id_encryption.php): failed to open stream: No such file or directory in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:53:26 Europe/Berlin] PHP Fatal error:  require_once(): Failed opening required '../includes/id_encryption.php' (include_path='C:\Users\user\Downloads\xamppfile\php\PEAR') in /home/twpurnyc/public_html/student/ajax/get_lesson_data.php on line 42
[30-Nov-2025 19:53:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:53:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:53:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:53:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:53:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:53:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:53:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:53:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:57:19 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:57:19 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:57:19 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:57:19 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:57:19 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:57:19 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:57:19 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:57:19 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 24","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 19:57:23 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 24","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"course_id":1,"user_id":1}}
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 19:57:37 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"course_id":1,"user_id":1}}
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 4, User ID: 1, Course ID: 1
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 1
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":4,"course_id":1,"title":"Test Lesson 4","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 4","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 19:58:34 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"course_id":1,"title":"Test Lesson 4","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 4","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"course_id":1,"user_id":1}}
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 4, User ID: 1, Course ID: 1
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 1
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":4,"course_id":1,"title":"Test Lesson 4","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 4","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 19:58:44 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"course_id":1,"title":"Test Lesson 4","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 4","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"course_id":1,"user_id":1}}
[30-Nov-2025 19:59:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 19:59:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 19:59:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 19:59:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 19:59:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 19:59:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 19:59:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 19:59:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:00:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:00:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:00:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:00:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:00:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:00:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:00:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:00:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:00:37 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"course_id":1,"user_id":1}}
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 24","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:00:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 24","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"course_id":1,"user_id":1}}
[30-Nov-2025 20:02:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:02:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:02:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:02:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:02:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:02:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:02:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:02:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:02:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 25","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"course_id":1,"user_id":1}}
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":26,"course_id":1,"title":"Test Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 26","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:03:04 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"course_id":1,"title":"Test Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 26","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"course_id":1,"user_id":1}}
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 27, User ID: 1, Course ID: 1
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 1
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Created mock lesson: {"lesson_id":27,"course_id":1,"title":"Test Lesson 27","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 27","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:03:12 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"course_id":1,"title":"Test Lesson 27","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","is_external":1,"duration":"5:00","description":"AJAX loaded lesson 27","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"course_id":1,"user_id":1}}
[30-Nov-2025 20:14:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:14:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:14:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:14:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:14:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:14:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:14:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:14:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 25
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:14:47 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"title":"Lesson 25","video_type":"local","video_url":"..\/uploads\/videos\/lesson_25.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:14:47"}}
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 25
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:15:04 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"title":"Lesson 25","video_type":"local","video_url":"..\/uploads\/videos\/lesson_25.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:15:04"}}
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 26
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:15:13 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"title":"Lesson 26","video_type":"local","video_url":"..\/uploads\/videos\/lesson_26.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:15:13"}}
[30-Nov-2025 20:15:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:15:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:15:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:15:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:15:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:15:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:15:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:15:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 25
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:16:31 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"title":"Lesson 25","video_type":"local","video_url":"..\/uploads\/videos\/lesson_25.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:16:31"}}
[30-Nov-2025 20:20:32 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:20:32 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:20:32 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:20:32 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:20:32 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:20:32 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:20:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:20:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[30-Nov-2025 20:20:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[30-Nov-2025 20:20:39 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:20:39 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 24
[30-Nov-2025 20:20:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:20:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"title":"Lesson 24","video_type":"local","video_url":"..\/uploads\/videos\/lesson_24.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:20:39"}}
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 4, User ID: 1, Course ID: 1
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 1
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 4
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:22:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"description":"Course lesson content","duration":"5:00","title":"Web Developer vs Designer","video_type":"youtube","youtube_video_id":"dQw4w9WgXcQ","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-11-30 20:22:48"}}
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Using fallback mock data for lesson: 24
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:22:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"title":"Lesson 24","video_type":"local","video_url":"..\/uploads\/videos\/lesson_24.mp4","description":"Course lesson content","duration":"5:00"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":1,"video_type":"local","timestamp":"2025-11-30 20:22:56"}}
[30-Nov-2025 20:26:40 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[30-Nov-2025 20:26:40 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[30-Nov-2025 20:26:40 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[30-Nov-2025 20:26:40 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[30-Nov-2025 20:26:40 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[30-Nov-2025 20:26:40 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[30-Nov-2025 20:26:40 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[30-Nov-2025 20:26:40 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Created simple mock lesson: {"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 25","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:26:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 25","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-11-30 20:26:46"}}
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Created simple mock lesson: {"lesson_id":26,"course_id":1,"title":"Test Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 26","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0}
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[30-Nov-2025 20:26:52 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"course_id":1,"title":"Test Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 26","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-11-30 20:26:52"}}
[01-Dec-2025 05:40:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 05:40:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 05:40:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 05:40:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 05:40:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 05:40:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 05:40:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 05:40:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Created simple mock lesson: {"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 24","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 05:43:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"course_id":1,"title":"Test Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 24","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 05:43:56"}}
[01-Dec-2025 06:03:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:03:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:03:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:03:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:03:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:03:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:03:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:03:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Database connection failed, using fallback data
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Created simple mock lesson: {"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 25","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 06:04:59 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Test Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"AJAX loaded lesson 25","duration":"5:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 06:04:59"}}
[01-Dec-2025 06:09:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:09:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:09:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:09:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:09:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:09:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:09:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:09:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Using fallback data for lesson: 24
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"course_id":1,"title":"Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 06:09:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"course_id":1,"title":"Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 06:09:20"}}
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Using fallback data for lesson: 25
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"course_id":1,"title":"Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 06:09:53 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"course_id":1,"title":"Lesson 25","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 06:09:53"}}
[01-Dec-2025 06:10:59 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:10:59 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:10:59 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:10:59 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:10:59 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:10:59 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:10:59 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:10:59 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Using fallback data for lesson: 26
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"course_id":1,"title":"Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 06:12:02 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"course_id":1,"title":"Lesson 26","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 06:12:02"}}
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Using fallback data for lesson: 24
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"course_id":1,"title":"Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0}
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 06:12:17 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"course_id":1,"title":"Lesson 24","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_type":"youtube","description":"No lesson data found","duration":"0:00","progress_percentage":0,"completed":0,"last_position":0},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":1,"video_type":"youtube","timestamp":"2025-12-01 06:12:17"}}
[01-Dec-2025 06:17:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:17:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:17:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:17:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:17:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:17:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:17:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:17:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 06:17:52 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 06:17:55 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:17:55 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:17:55 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:17:55 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:17:55 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:17:55 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:17:55 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:17:55 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 26
[01-Dec-2025 06:18:35 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 26
[01-Dec-2025 06:18:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:18:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:18:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:18:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:18:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:18:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:18:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:18:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 06:18:43 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 06:18:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:18:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:18:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:18:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:18:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:18:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:18:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:18:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 26, User ID: 1, Course ID: 1
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 1
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 26
[01-Dec-2025 06:20:24 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 26
[01-Dec-2025 06:20:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:20:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:20:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:20:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:20:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:20:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:20:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:20:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 06:20:33 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 06:20:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:20:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:20:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:20:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:20:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:20:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:20:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:20:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 4, User ID: 1, Course ID: 1
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 1
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 4
[01-Dec-2025 06:28:12 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 4
[01-Dec-2025 06:28:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:28:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:28:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:28:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:28:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:28:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:28:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:28:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:36:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:36:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:36:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:36:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:36:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:36:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:36:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:36:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 06:36:19 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 06:36:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:36:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:36:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:36:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:36:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:36:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:36:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:36:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 06:36:39 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 06:36:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:36:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:36:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:36:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:36:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:36:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:36:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:36:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:51:07 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:51:07 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:51:07 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:51:07 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:51:07 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:51:07 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:51:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:51:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 24, User ID: 1, Course ID: 1
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 06:51:10 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 06:51:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:51:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:51:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:51:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:51:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:51:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:51:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:51:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:59:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:59:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:59:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:59:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:59:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:59:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:59:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:59:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Simplified: Lesson ID: 25, User ID: 1, Course ID: 1
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 1
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 06:59:30 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 06:59:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 06:59:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 06:59:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 06:59:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 06:59:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 06:59:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 06:59:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 06:59:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:03:00 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:03:00 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:03:00 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:03:00 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:03:00 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:03:00 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:03:00 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:03:00 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Skipping complex includes for testing
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Using course_id: 1 for lesson: 24
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 1
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 07:03:05 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 07:03:12 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:03:12 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:03:12 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:03:12 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:03:12 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:03:12 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:03:13 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:03:13 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:08:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:08:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:08:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:08:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:08:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:08:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:08:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:08:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:08:23 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:08:27 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:08:27 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:08:27 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:08:27 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:08:27 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:08:27 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:08:27 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:08:27 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:12:37 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:12:37 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:12:37 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:12:37 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:12:37 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:12:37 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:12:37 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:12:37 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Decrypted course_id: 13 from encrypted: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 07:12:44 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 07:12:47 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:12:47 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:12:47 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:12:47 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:12:47 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:12:47 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:12:47 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:12:47 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:20:28 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:20:28 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:20:28 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:20:28 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:20:28 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:20:28 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:20:28 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:20:28 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Decrypted course_id: 13 from encrypted: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 07:20:36 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 07:20:39 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:20:39 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:20:39 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:20:39 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:20:39 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:20:39 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:20:39 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:20:39 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:27:06 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:27:06 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:27:06 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:27:06 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:27:06 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:27:06 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:27:06 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:27:06 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 07:27:12 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 07:27:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:27:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:27:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:27:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:27:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:27:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:27:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:27:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 07:28:21 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 07:28:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:28:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:28:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:28:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:28:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:28:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:28:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:28:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 25
[01-Dec-2025 07:28:32 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 25
[01-Dec-2025 07:28:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:28:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:28:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:28:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:28:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:28:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:28:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:28:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] No real lesson data found for lesson: 24
[01-Dec-2025 07:28:41 Europe/Berlin] [AJAX DEBUG] Error occurred: Lesson not found: No real lesson data available for lesson ID 24
[01-Dec-2025 07:28:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:28:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:28:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:28:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:28:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:28:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:28:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:28:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:31:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:31:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:31:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:31:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:31:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:31:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:31:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:31:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Creating simplified lesson data for lesson_id: 25 to restore working AJAX
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Created simplified lesson data: {"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:43","updated_at":"2025-12-01 07:31:43","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:43","updated_at":"2025-12-01 07:31:43","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:31:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:43","updated_at":"2025-12-01 07:31:43","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:31:43"}}
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Creating simplified lesson data for lesson_id: 26 to restore working AJAX
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Created simplified lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:55","updated_at":"2025-12-01 07:31:55","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:55","updated_at":"2025-12-01 07:31:55","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:31:55 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:31:55","updated_at":"2025-12-01 07:31:55","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:31:55"}}
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Creating simplified lesson data for lesson_id: 27 to restore working AJAX
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Created simplified lesson data: {"lesson_id":27,"video_id":27,"title":"Lesson 27","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 27","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:32:16","updated_at":"2025-12-01 07:32:16","video_order":27,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Lesson 27","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 27","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:32:16","updated_at":"2025-12-01 07:32:16","video_order":27,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:32:16 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Lesson 27","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 27","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:32:16","updated_at":"2025-12-01 07:32:16","video_order":27,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:32:16"}}
[01-Dec-2025 07:36:04 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:36:04 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:36:04 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:36:04 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:36:04 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:36:04 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:36:04 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:36:04 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Using fallback lesson data for lesson_id: 25
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:08","updated_at":"2025-12-01 07:36:08","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:08","updated_at":"2025-12-01 07:36:08","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:36:08 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Lesson 25","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 25","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:08","updated_at":"2025-12-01 07:36:08","video_order":25,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:36:08"}}
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Using fallback lesson data for lesson_id: 26
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:15","updated_at":"2025-12-01 07:36:15","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:15","updated_at":"2025-12-01 07:36:15","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:36:15 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:36:15","updated_at":"2025-12-01 07:36:15","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:36:15"}}
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Using fallback lesson data for lesson_id: 26
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:03","updated_at":"2025-12-01 07:37:03","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:03","updated_at":"2025-12-01 07:37:03","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:37:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Lesson 26","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 26","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:03","updated_at":"2025-12-01 07:37:03","video_order":26,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:37:03"}}
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Database connection failed: Access denied for user 'root'@'localhost' (using password: NO)
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Database error: Database connection failed
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Using fallback lesson data for lesson_id: 24
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"Lesson 24","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 24","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:07","updated_at":"2025-12-01 07:37:07","video_order":24,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"Lesson 24","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 24","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:07","updated_at":"2025-12-01 07:37:07","video_order":24,"is_published":1,"last_position":0,"video_type":"youtube"}
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:37:07 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"Lesson 24","duration":"10:30","video_url":"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ","video_path":"","thumbnail":"","description":"Lesson content for lesson 24","completed":false,"has_assignment":true,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-01 07:37:07","updated_at":"2025-12-01 07:37:07","video_order":24,"is_published":1,"last_position":0,"video_type":"youtube"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"youtube","timestamp":"2025-12-01 07:37:07"}}
[01-Dec-2025 07:40:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:40:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:40:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:40:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:40:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:40:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:40:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:40:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:42:34 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:42:34 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:42:34 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:42:34 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:42:34 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:42:34 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:42:34 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:42:34 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:44:53 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:44:53 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:44:53 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:44:53 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:44:53 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:44:53 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:44:53 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:44:53 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:44:57 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 07:44:57"}}
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 07:45:07 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:45:08 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 07:45:08"}}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:45:13 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":13,"video_type":"file","timestamp":"2025-12-01 07:45:13"}}
[01-Dec-2025 07:47:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:47:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:47:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:47:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:47:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:47:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:47:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:47:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:47:57 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:48:05 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 07:48:05"}}
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:48:10 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:49:50 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:49:50 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:49:50 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:49:50 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:49:50 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:49:50 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:49:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:49:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69074cfcb51ba_1762086140.mp4 -> https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4 (type: file)
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:49:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":13,"video_type":"file","timestamp":"2025-12-01 07:49:56"}}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69074cfcb51ba_1762086140.mp4 -> https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4 (type: file)
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:49:58 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":13,"video_type":"file","timestamp":"2025-12-01 07:49:58"}}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:51:12 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 07:51:12"}}
[01-Dec-2025 07:54:56 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:54:56 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:54:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:54:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:54:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:54:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:54:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:54:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:59:16 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 07:59:16 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 07:59:16 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 07:59:16 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 07:59:16 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 07:59:16 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 07:59:16 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 07:59:16 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 07:59:21 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 07:59:21"}}
[01-Dec-2025 08:06:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:06:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:06:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:06:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:06:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:06:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:06:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:06:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:06:15 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:06:15"}}
[01-Dec-2025 08:10:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:10:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:10:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:10:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:10:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:10:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:10:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:10:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:10:58 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:10:58"}}
[01-Dec-2025 08:13:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:13:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:13:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:13:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:13:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:13:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:13:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:13:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 08:13:28 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:13:29 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:13:29"}}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:13:41 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:13:41"}}
[01-Dec-2025 08:15:49 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:15:49 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:15:49 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:15:49 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:15:49 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:15:49 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:15:50 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:15:50 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:15:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:15:56"}}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 27
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":27,"course_id":13,"teacher_id":14,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","description":"sdc","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/1NTKwpAVcHg?si=iTOZz2TxslhXGRaz","platform":"youtube","embed_code":null,"video_id_external":"1NTKwpAVcHg","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","duration":"7:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/1NTKwpAVcHg (type: url)
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:16:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:16:03"}}
[01-Dec-2025 08:17:41 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:17:41 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:17:41 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:17:41 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:17:41 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:17:41 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:17:41 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:17:41 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:17:52 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:17:52"}}
[01-Dec-2025 08:17:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:17:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:17:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:17:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:17:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:17:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:17:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:17:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:23:23 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:23:23 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:23:23 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:23:23 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:23:23 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:23:23 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:23:23 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:23:23 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:23:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:23:36"}}
[01-Dec-2025 08:29:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:29:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:29:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:29:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:29:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:29:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:29:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:29:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:29:40 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:29:40"}}
[01-Dec-2025 08:32:21 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:32:21 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:32:21 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:32:21 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:32:21 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:32:21 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:32:21 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:32:21 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:32:28 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:32:28"}}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:32:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:32:38"}}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:32:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:32:43"}}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:33:02 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:33:02"}}
[01-Dec-2025 08:33:08 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:33:08 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:33:08 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:33:08 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:33:08 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:33:08 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:33:08 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:33:08 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:33:16 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:33:16"}}
[01-Dec-2025 08:36:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:36:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:36:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:36:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:36:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:36:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:36:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:36:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:36:35 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:36:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:36:36"}}
[01-Dec-2025 08:39:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:39:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:39:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:39:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:39:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:39:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:39:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:39:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:39:30 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:39:30"}}
[01-Dec-2025 08:39:44 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:39:44 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:39:44 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:39:44 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:39:44 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:39:44 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:39:44 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:39:44 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 08:40:02 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:40:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:40:03"}}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:40:08 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:40:08"}}
[01-Dec-2025 08:40:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:40:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:40:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:40:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:40:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:40:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:40:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:40:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:46:38 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:46:38 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:46:38 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:46:38 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:46:38 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:46:38 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:46:38 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:46:38 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:46:47 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:46:47"}}
[01-Dec-2025 08:52:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 08:52:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 08:52:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 08:52:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 08:52:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 08:52:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 08:52:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 08:52:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 08:52:50 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 08:52:50"}}
[01-Dec-2025 09:07:33 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:07:33 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:07:33 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:07:33 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:07:33 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:07:33 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:07:33 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:07:33 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:07:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:07:48"}}
[01-Dec-2025 09:10:57 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:10:57 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:10:57 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:10:57 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:10:57 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:10:57 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:10:57 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:10:57 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:11:00 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:11:00"}}
[01-Dec-2025 09:12:18 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:12:18 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:12:18 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:12:18 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:12:18 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:12:18 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:12:18 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:12:18 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:12:24 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:12:24"}}
[01-Dec-2025 09:18:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:18:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:18:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:18:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:18:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:18:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:18:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:18:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:18:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:18:20"}}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 27
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":27,"course_id":13,"teacher_id":14,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","description":"sdc","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/1NTKwpAVcHg?si=iTOZz2TxslhXGRaz","platform":"youtube","embed_code":null,"video_id_external":"1NTKwpAVcHg","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","duration":"7:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/1NTKwpAVcHg (type: url)
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:19:21 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:19:21"}}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:19:27 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:19:27"}}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:19:32 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:19:32"}}
[01-Dec-2025 09:22:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:22:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:22:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:22:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:22:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:22:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:22:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:22:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:22:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:22:51"}}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:23:07 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:23:07"}}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 27
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":27,"course_id":13,"teacher_id":14,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","description":"sdc","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/1NTKwpAVcHg?si=iTOZz2TxslhXGRaz","platform":"youtube","embed_code":null,"video_id_external":"1NTKwpAVcHg","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","duration":"7:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/1NTKwpAVcHg (type: url)
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:26:30 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:26:30"}}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:26:53 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:26:53"}}
[01-Dec-2025 09:27:25 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:27:25 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:27:25 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:27:25 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:27:25 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:27:25 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:27:25 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:27:25 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:27:42 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:27:42 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:27:42 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:27:42 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:27:42 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:27:42 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:27:42 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:27:42 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:27:51 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:27:51 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:27:51 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:27:51 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:27:51 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:27:51 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:27:51 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:27:51 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:28:05 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:28:05 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:28:05 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:28:05 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:28:05 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:28:05 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:28:05 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:28:05 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:28:12 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:28:12"}}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:28:18 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:28:18"}}
[01-Dec-2025 09:28:29 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:28:29 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:28:29 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:28:29 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:28:29 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:28:29 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:28:29 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:28:29 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:28:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:28:36"}}
[01-Dec-2025 09:33:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:33:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:33:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:33:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:33:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:33:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:33:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:33:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:34:31 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:34:31 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:34:31 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:34:31 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:34:31 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:34:31 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:34:32 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:34:32 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69074cfcb51ba_1762086140.mp4 -> https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4 (type: file)
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:39:25 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":13,"video_type":"file","timestamp":"2025-12-01 09:39:25"}}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:42:52 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:42:52"}}
[01-Dec-2025 09:47:11 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:47:11 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:47:11 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:47:11 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:47:11 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:47:11 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:47:11 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:47:11 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 27
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":27,"course_id":13,"teacher_id":14,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","description":"sdc","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/1NTKwpAVcHg?si=iTOZz2TxslhXGRaz","platform":"youtube","embed_code":null,"video_id_external":"1NTKwpAVcHg","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","duration":"7:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/1NTKwpAVcHg (type: url)
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:47:22 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:47:22"}}
[01-Dec-2025 09:47:54 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:47:54 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:47:54 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:47:54 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:47:54 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:47:54 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:47:54 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:47:54 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 09:48:09 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 09:48:09"}}
[01-Dec-2025 09:51:15 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 09:51:15 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 09:51:15 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 09:51:15 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 09:51:15 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 09:51:15 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 09:51:15 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 09:51:15 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 09:51:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:51:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:51:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:51:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:51:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:51:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:51:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:51:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:51:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:51:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:51:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:51:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:51:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:51:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:51:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:52:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:52:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:52:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:53:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:53:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:53:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:54:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:54:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:54:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:55:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:55:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:55:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:56:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:56:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:56:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:57:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:57:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:57:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:58:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:58:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:58:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 09:59:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 09:59:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 09:59:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:00:36 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:00:36 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:00:36 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:00:36 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:00:36 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:00:36 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:00:36 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 10:00:36 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:01:16 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:01:16"}}
[01-Dec-2025 10:07:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:07:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:07:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:07:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:07:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:07:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:07:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 10:07:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 10:08:30 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:08:30 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:08:30 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:08:30 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:08:30 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:08:30 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:08:30 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 10:08:30 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:08:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:08:46"}}
[01-Dec-2025 10:14:48 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:14:48 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:14:48 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:14:48 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:14:48 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:14:48 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:14:48 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.1% (avg: 16.142857, completed: 5/7)
[01-Dec-2025 10:14:48 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.142857"}
[01-Dec-2025 10:14:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:14:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:14:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:15:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:15:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:15:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:16:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:16:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:16:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:17:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:17:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:17:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:18:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:18:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:18:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:19:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:19:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:19:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:19:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:19:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:26 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:20:26 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:20:26 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:20:26 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:20:26 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:20:26 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:20:26 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.7% (avg: 15.714286, completed: 5/7)
[01-Dec-2025 10:20:26 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.714286"}
[01-Dec-2025 10:20:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:20:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:20:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:20:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:21:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:21:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:21:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:46 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:22:46 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:22:46 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:22:46 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:22:46 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:22:46 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:22:46 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.7% (avg: 15.714286, completed: 5/7)
[01-Dec-2025 10:22:46 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.714286"}
[01-Dec-2025 10:22:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:22:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:22:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:22:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:23:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:23:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:23:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:23:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":12,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:23:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:23:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:23:10 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:23:10 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:23:10 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:23:10 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:23:10 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:23:10 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:23:10 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.9% (avg: 15.857143, completed: 5/7)
[01-Dec-2025 10:23:10 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.857143"}
[01-Dec-2025 10:28:09 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:28:09 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:28:09 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:28:09 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:28:09 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:28:09 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:28:09 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 15.9% (avg: 15.857143, completed: 5/7)
[01-Dec-2025 10:28:09 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"15.857143"}
[01-Dec-2025 10:28:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":19,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":22,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":25,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:28:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:28:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:28:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:29:01 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:29:01"}}
[01-Dec-2025 10:29:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:29:10 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:29:10"}}
[01-Dec-2025 10:29:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:29:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:29:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:29:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:30:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:30:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:30:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:31:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:31:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:31:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:32:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:32:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:32:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:33:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:33:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:33:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:34:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:34:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:34:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:34:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:34:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:34:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:34:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:34:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:34:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:35:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:35:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:35:24 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:35:24 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:35:24 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:35:24 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:35:24 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:35:24 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:35:24 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.9% (avg: 16.857143, completed: 5/7)
[01-Dec-2025 10:35:24 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.857143"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:35:31 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:35:31"}}
[01-Dec-2025 10:36:43 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:36:43 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:36:43 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:36:43 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:36:43 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:36:43 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:36:43 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.9% (avg: 16.857143, completed: 5/7)
[01-Dec-2025 10:36:43 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.857143"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:36:52 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:36:52"}}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:37:22 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:37:22"}}
[01-Dec-2025 10:39:22 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:39:22 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:39:22 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:39:22 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:39:22 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:39:22 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:39:22 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.9% (avg: 16.857143, completed: 5/7)
[01-Dec-2025 10:39:22 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.857143"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:39:29 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:39:29"}}
[01-Dec-2025 10:39:45 Europe/Berlin] 🔄 VIDEO PROGRESS HANDLER: Forwarding to existing working system
[01-Dec-2025 10:39:45 Europe/Berlin] 🐛 DEBUG: Available data - GET: [], SESSION: "none", INPUT: {"action":"get_course_progress","course_id":13}
[01-Dec-2025 10:39:45 Europe/Berlin] 🔍 SESSION DEBUG: user_id=15, user_role=student
[01-Dec-2025 10:39:45 Europe/Berlin] 🔍 EXECUTING QUERY:        SELECT         COUNT(*) as total_videos,         SUM(CASE WHEN vp.completed = 1 THEN 1 ELSE 0 END) as completed_videos,         COALESCE(AVG(CASE WHEN vp.completion_percentage IS NOT NULL THEN vp.completion_percentage ELSE 0 END), 0) as avg_progress_percentage       FROM videos v       LEFT JOIN video_progress vp ON v.video_id = vp.video_id AND vp.student_id = ?       WHERE v.course_id = ? AND v.is_published = 1     
[01-Dec-2025 10:39:45 Europe/Berlin] 🔍 QUERY PARAMS: student_id=15, course_id=13
[01-Dec-2025 10:39:45 Europe/Berlin] 🔍 CURRENT LESSON_ID: none
[01-Dec-2025 10:39:45 Europe/Berlin] 🎯 COURSE PROGRESS CALCULATED: 16.9% (avg: 16.857143, completed: 5/7)
[01-Dec-2025 10:39:45 Europe/Berlin] 🔍 RAW DB ROW: {"total_videos":7,"completed_videos":"5","avg_progress_percentage":"16.857143"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:40:13 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:40:13"}}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:42:50 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:42:50"}}
[01-Dec-2025 10:43:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:43:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:43:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:43:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:43:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:43:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:44:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:44:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:44:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:45:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:45:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:45:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:46:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:46:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:46:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:47:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:47:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:47:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:48:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:48:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:48:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":9,"current_time":17,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":20,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":12,"current_time":23,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":26,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":15,"current_time":28,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:49:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":32,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:49:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:49:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":34,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":18,"current_time":35,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":19,"current_time":36,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":20,"current_time":39,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":22,"current_time":42,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":23,"current_time":45,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":25,"current_time":48,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":26,"current_time":51,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":54,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:50:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:50:46"}}
[01-Dec-2025 10:50:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:50:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:50:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:50:59 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:50:59"}}
[01-Dec-2025 10:51:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:51:14 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:51:14"}}
[01-Dec-2025 10:51:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:51:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:51:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:51:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:52:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:52:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:52:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:53:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:53:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:53:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:54:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:54:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:54:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:54:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:54:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:54:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:54:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":28,"current_time":55,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:54:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:54:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:54:16 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:54:16"}}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:54:24 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:54:24"}}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":26,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 26, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 26
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 26 in course: 13
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 26
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":26,"course_id":13,"teacher_id":14,"title":"Web Developer vs Web Designer | Which One is for You?","description":"hbj","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/i1d9HoPdBz0?si=wek2bXltkSdrH5PI","platform":"youtube","embed_code":null,"video_id_external":"i1d9HoPdBz0","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","duration":"4:08","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/i1d9HoPdBz0 (type: url)
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:54:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":26,"video_id":26,"title":"Web Developer vs Web Designer | Which One is for You?","duration":"4:08","video_url":"https:\/\/www.youtube.com\/embed\/i1d9HoPdBz0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/i1d9HoPdBz0\/maxresdefault.jpg","description":"hbj","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:40:18","updated_at":"2025-11-29 13:40:18","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":27,"title":"Next Lesson 27"},"debug_info":{"lesson_id":26,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:54:51"}}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 10:56:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 10:56:38"}}
[01-Dec-2025 10:59:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:59:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:59:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:59:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":5,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:59:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:59:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 10:59:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":8,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 10:59:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 10:59:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":6,"current_time":11,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":14,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:00:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:00:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:00:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:01:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:01:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:01:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:02:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:02:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:02:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:03:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:03:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:03:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:04:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:04:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:04:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:05:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:05:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:05:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:06:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:06:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:06:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:07:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:07:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:07:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:08:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:08:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:08:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:09:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:09:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:09:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:10:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:10:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:10:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:11:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:11:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:12:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:12:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:12:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:13:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:13:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:13:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:14:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:14:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:14:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:15:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:15:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:15:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:16:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:16:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:16:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:17:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:17:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:17:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:18:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:18:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:18:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:19:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:19:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:19:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:20:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:20:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:20:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:21:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:21:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:21:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:22:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:22:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:22:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:23:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:23:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:23:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:24:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:24:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:24:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:25:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:25:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:25:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:26:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:26:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:26:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:27:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:27:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:27:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:28:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:28:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:28:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:29:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:29:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:29:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:30:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:30:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:30:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:31:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:31:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:31:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:32:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":15,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 11:32:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 11:32:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 11:45:41 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 11:45:42 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 11:45:42"}}
[01-Dec-2025 11:46:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 11:46:13 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 11:46:14 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 11:46:14"}}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 12:02:29 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 12:02:29"}}
[01-Dec-2025 12:10:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":2,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:34 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":3,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:40 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":8,"current_time":16,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:49 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":10,"current_time":18,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:49 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:49 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":11,"current_time":21,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":13,"current_time":24,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:10:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":14,"current_time":27,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:10:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:10:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:11:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:11:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:11:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:52 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:52 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:52 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:55 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:55 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:55 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:12:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:12:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:12:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:04 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:04 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:04 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:22 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:13:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:13:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:13:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:14:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:14:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:14:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:14:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:14:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:14:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:14:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:14:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:14:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:15:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:15:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:15:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:15:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:15:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:15:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:15:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:15:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:15:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:15:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:15:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:15:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:15:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":16,"current_time":30,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:15:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:15:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:16:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":1,"current_time":1,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:16:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:16:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:16:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":2,"current_time":4,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:16:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:16:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:16:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":4,"current_time":7,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:16:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:16:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:16:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":5,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:16:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:16:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:16:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":29,"lesson_id":29,"course_id":13,"progress_percentage":7,"current_time":13,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 12:16:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 5, Overall: 71%
[01-Dec-2025 12:16:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 5 completed videos ÷ 7 total lessons × 100 = 71%
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 12:37:55 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 12:37:55"}}
[01-Dec-2025 12:39:50 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 12:39:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 12:39:51"}}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 13:24:08 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 13:24:08"}}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 13:30:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 13:30:36"}}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 13:33:33 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 13:33:33"}}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 13:56:04 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 13:56:04"}}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 13:56:12 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 13:56:12"}}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 14:08:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 14:08:20"}}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":4,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 4, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 4
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 4 in course: 13
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 4
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":4,"course_id":13,"teacher_id":14,"title":"welcome","description":"0","video_url":"uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","duration":"0:54","price":"3463.00","views":0,"likes":0,"category_name":"","is_free":0,"is_published":1,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69074cfcb51ba_1762086140.mp4 -> https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69074cfcb51ba_1762086140.mp4 (type: file)
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 14:19:05 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":4,"video_id":4,"title":"welcome","duration":"0:54","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69074cfcb51ba_1762086140.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69074cfcb6725_1762086140.jpg","description":"0","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-02 12:22:20","updated_at":"2025-11-11 17:39:05","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":5,"title":"Next Lesson 5"},"debug_info":{"lesson_id":4,"user_id":1,"course_id":13,"video_type":"file","timestamp":"2025-12-01 14:19:05"}}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 14:20:37 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 14:20:37"}}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 14:20:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 14:20:38"}}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 15:56:35 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 15:56:35"}}
[01-Dec-2025 16:50:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":3,"current_time":3,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:40 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:40 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":5,"current_time":6,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":8,"current_time":9,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:50:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:50:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:50:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:17 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:17 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":25,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 25, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 25
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 25 in course: 13
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 25
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":25,"course_id":13,"teacher_id":14,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","description":"wedvf","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/iQCjr2ubJuU?si=Cg5lFUOtOZFd-Rrt","platform":"youtube","embed_code":null,"video_id_external":"iQCjr2ubJuU","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","duration":"12:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/iQCjr2ubJuU (type: url)
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 16:51:53 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":25,"video_id":25,"title":"Google Just Made Voice AI Stupidly Easy (Gemini 3)","duration":"12:15","video_url":"https:\/\/www.youtube.com\/embed\/iQCjr2ubJuU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/iQCjr2ubJuU\/maxresdefault.jpg","description":"wedvf","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 13:27:38","updated_at":"2025-11-29 13:27:38","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":26,"title":"Next Lesson 26"},"debug_info":{"lesson_id":25,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 16:51:53"}}
[01-Dec-2025 16:51:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:51:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:51:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:51:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:52:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:52:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:52:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:52:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:52:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:52:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:52:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:52:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:52:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:52:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:52:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:52:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 16:52:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":24,"lesson_id":24,"course_id":13,"progress_percentage":9,"current_time":10,"completed":0,"completed_raw":"0","student_id":15}
[01-Dec-2025 16:52:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 4, Overall: 57%
[01-Dec-2025 16:52:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 4 completed videos ÷ 7 total lessons × 100 = 57%
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":28,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 28, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 28
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 28 in course: 13
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 28
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":28,"course_id":13,"teacher_id":14,"title":"9 Web Design Hacks I Wish I Knew Years Ago","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/g7xkVEWrX8E?si=ASyQ3-htb6Bbyip-","platform":"youtube","embed_code":null,"video_id_external":"g7xkVEWrX8E","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","duration":"0:48","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/g7xkVEWrX8E (type: url)
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 18:35:04 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":28,"video_id":28,"title":"9 Web Design Hacks I Wish I Knew Years Ago","duration":"0:48","video_url":"https:\/\/www.youtube.com\/embed\/g7xkVEWrX8E","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/g7xkVEWrX8E\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 07:46:42","updated_at":"2025-11-30 07:46:42","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":29,"title":"Next Lesson 29"},"debug_info":{"lesson_id":28,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 18:35:04"}}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 18:36:36"}}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 18:36:36"}}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[01-Dec-2025 18:36:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-01 18:36:36"}}
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":29,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 29, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 29
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 29 in course: 13
[06-Dec-2025 18:06:47 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 29
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":29,"course_id":13,"teacher_id":14,"title":"Everything about Web Design in 3 minutes.","description":"welcom","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/F4fbwKV9dBU?si=yZUgCd0eDpBf8nh4","platform":"youtube","embed_code":null,"video_id_external":"F4fbwKV9dBU","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","duration":"3:16","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/F4fbwKV9dBU (type: url)
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[06-Dec-2025 18:06:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":29,"video_id":29,"title":"Everything about Web Design in 3 minutes.","duration":"3:16","video_url":"https:\/\/www.youtube.com\/embed\/F4fbwKV9dBU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/F4fbwKV9dBU\/maxresdefault.jpg","description":"welcom","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-30 08:02:34","updated_at":"2025-11-30 08:02:34","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":30,"title":"Next Lesson 30"},"debug_info":{"lesson_id":29,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-06 18:06:48"}}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[06-Dec-2025 18:10:58 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-06 18:10:58"}}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":27,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 27, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 27
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 27 in course: 13
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 27
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":27,"course_id":13,"teacher_id":14,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","description":"sdc","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/1NTKwpAVcHg?si=iTOZz2TxslhXGRaz","platform":"youtube","embed_code":null,"video_id_external":"1NTKwpAVcHg","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","duration":"7:15","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/1NTKwpAVcHg (type: url)
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[07-Dec-2025 15:03:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":27,"video_id":27,"title":"Give Me 7 Minutes & Your Web Design Skills Will Take Off","duration":"7:15","video_url":"https:\/\/www.youtube.com\/embed\/1NTKwpAVcHg","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/1NTKwpAVcHg\/maxresdefault.jpg","description":"sdc","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-29 14:12:10","updated_at":"2025-11-29 14:12:10","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":28,"title":"Next Lesson 28"},"debug_info":{"lesson_id":27,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-07 15:03:51"}}
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":24,"course_id":"am5xVTdudk5XNXNTMEtKUzVESnJaUT09"}
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 24, Encrypted Course ID: am5xVTdudk5XNXNTMEtKUzVESnJaUT09, User ID: 1
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: am5xVTdudk5XNXNTMEtKUzVESnJaUT09
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Decryption result: 13
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Using course_id: 13 for lesson: 24
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 24 in course: 13
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 24
[09-Dec-2025 18:18:06 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":24,"course_id":13,"teacher_id":14,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/ZjNclqXQ27Q?si=26pKH_OVQf7BxaMP","platform":"youtube","embed_code":null,"video_id_external":"ZjNclqXQ27Q","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","duration":"2:00","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/ZjNclqXQ27Q (type: url)
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[09-Dec-2025 18:18:07 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":24,"video_id":24,"title":"How to Add Bootstrap CDN Link in HTML | Bootstrap Setup Tutorial","duration":"2:00","video_url":"https:\/\/www.youtube.com\/embed\/ZjNclqXQ27Q","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/ZjNclqXQ27Q\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-11-28 14:33:31","updated_at":"2025-11-28 14:33:31","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":25,"title":"Next Lesson 25"},"debug_info":{"lesson_id":24,"user_id":1,"course_id":13,"video_type":"url","timestamp":"2025-12-09 18:18:07"}}
[12-Dec-2025 17:24:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":3,"current_time":1,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":4,"current_time":2,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":4,"current_time":2,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":4,"current_time":2,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":7,"current_time":4,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":12,"current_time":7,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":18,"current_time":9,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":23,"current_time":12,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:24:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":28,"current_time":15,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:24:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:24:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":33,"current_time":18,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":38,"current_time":21,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:06 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":43,"current_time":24,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:06 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:06 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":48,"current_time":27,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":54,"current_time":30,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":59,"current_time":33,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":64,"current_time":36,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":69,"current_time":39,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:21 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:21 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":74,"current_time":42,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":79,"current_time":45,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:27 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:27 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":84,"current_time":47,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":89,"current_time":50,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":94,"current_time":53,"completed":0,"completed_raw":"0","student_id":41}
[12-Dec-2025 17:25:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[12-Dec-2025 17:25:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[12-Dec-2025 17:25:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[12-Dec-2025 17:25:57 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":30,"lesson_id":30,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[12-Dec-2025 17:25:57 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[12-Dec-2025 17:25:57 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[14-Dec-2025 16:06:16 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-14 16:06:16"}}
[14-Dec-2025 16:08:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":5,"current_time":2,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":10,"current_time":5,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":15,"current_time":8,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":20,"current_time":11,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:17 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":25,"current_time":14,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":31,"current_time":17,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:23 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":36,"current_time":20,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:23 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:23 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:26 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":41,"current_time":23,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:26 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:26 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:29 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":46,"current_time":26,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:29 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:29 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":52,"current_time":29,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:35 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":57,"current_time":32,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:35 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:35 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:38 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":62,"current_time":35,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:38 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:38 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:41 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":67,"current_time":38,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:41 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:41 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:44 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":73,"current_time":41,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:44 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:44 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:47 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":78,"current_time":44,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:47 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:47 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:50 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":83,"current_time":47,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:50 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:50 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:53 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":88,"current_time":50,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:53 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:53 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:56 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":94,"current_time":53,"completed":0,"completed_raw":"0","student_id":41}
[14-Dec-2025 16:08:56 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 1, Overall: 14%
[14-Dec-2025 16:08:56 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 1 completed videos ÷ 7 total lessons × 100 = 14%
[14-Dec-2025 16:08:59 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":99,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:08:59 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:08:59 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[14-Dec-2025 16:09:02 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:09:02 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:09:02 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[14-Dec-2025 16:09:05 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:09:05 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:09:05 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[14-Dec-2025 16:09:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:09:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:09:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[14-Dec-2025 16:09:11 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:09:11 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:09:11 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[14-Dec-2025 16:09:14 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":31,"lesson_id":31,"course_id":14,"progress_percentage":100,"current_time":56,"completed":1,"completed_raw":"1","student_id":41}
[14-Dec-2025 16:09:14 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 2, Overall: 29%
[14-Dec-2025 16:09:14 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 2 completed videos ÷ 7 total lessons × 100 = 29%
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[15-Dec-2025 08:45:04 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-15 08:45:04"}}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[15-Dec-2025 15:29:27 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-15 15:29:27"}}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 10:09:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-16 10:09:39"}}
[16-Dec-2025 16:20:29 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":33,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":33,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 33, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 33
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 33 in course: 17
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 33
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":33,"course_id":17,"teacher_id":14,"title":"accounting part 2","description":"welcome","video_url":"uploads\/videos\/video_6941613a8cced_1765892410.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941613a8cced_1765892410.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 13:40:11","updated_at":"2025-12-16 13:40:11","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941613a8cced_1765892410.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941613a8cced_1765892410.mp4
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941613a8cced_1765892410.mp4 (type: file)
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":33,"video_id":33,"title":"accounting part 2","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941613a8cced_1765892410.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941613a8cced_1765892410.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:40:11","updated_at":"2025-12-16 13:40:11","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":33,"video_id":33,"title":"accounting part 2","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941613a8cced_1765892410.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941613a8cced_1765892410.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:40:11","updated_at":"2025-12-16 13:40:11","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":33,"video_id":33,"title":"accounting part 2","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941613a8cced_1765892410.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941613a8cced_1765892410.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:40:11","updated_at":"2025-12-16 13:40:11","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 16:20:30 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":33,"video_id":33,"title":"accounting part 2","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941613a8cced_1765892410.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941613a8cced_1765892410.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:40:11","updated_at":"2025-12-16 13:40:11","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":34,"title":"Next Lesson 34"},"debug_info":{"lesson_id":33,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 16:20:30"}}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 16:21:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 16:21:39"}}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 16:34:27 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 16:34:27"}}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 16:55:45 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 16:55:45"}}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 35, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 35
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 35 in course: 17
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 35
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":35,"course_id":17,"teacher_id":14,"title":"welcome","description":"yes","video_url":"uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416aec2f7e5_1765894892.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4 (type: file)
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:00:37 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":36,"title":"Next Lesson 36"},"debug_info":{"lesson_id":35,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:00:37"}}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 35, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 35
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 35 in course: 17
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 35
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":35,"course_id":17,"teacher_id":14,"title":"welcome","description":"yes","video_url":"uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416aec2f7e5_1765894892.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4 (type: file)
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:05:37 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":36,"title":"Next Lesson 36"},"debug_info":{"lesson_id":35,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:05:37"}}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:12:18 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:12:18"}}
[16-Dec-2025 17:34:13 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":35,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 35, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 35
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 35 in course: 17
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 35
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":35,"course_id":17,"teacher_id":14,"title":"welcome","description":"yes","video_url":"uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416aec2f7e5_1765894892.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416aec2f7e5_1765894892.mp4 (type: file)
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:14 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":35,"video_id":35,"title":"welcome","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416aec2f7e5_1765894892.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416aec2f7e5_1765894892.jpg","description":"yes","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:21:32","updated_at":"2025-12-16 14:21:32","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":36,"title":"Next Lesson 36"},"debug_info":{"lesson_id":35,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:14"}}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 34, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 34
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 34 in course: 17
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 34
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":34,"course_id":17,"teacher_id":14,"title":"Accounting Part 3","description":"welcome","video_url":"uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941653ea5cf2_1765893438.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4 (type: file)
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:30 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":35,"title":"Next Lesson 35"},"debug_info":{"lesson_id":34,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:30"}}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 34, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 34
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 34 in course: 17
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 34
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":34,"course_id":17,"teacher_id":14,"title":"Accounting Part 3","description":"welcome","video_url":"uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941653ea5cf2_1765893438.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4 (type: file)
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:35 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":35,"title":"Next Lesson 35"},"debug_info":{"lesson_id":34,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:35"}}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":34,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 34, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 34
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 34 in course: 17
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 34
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":34,"course_id":17,"teacher_id":14,"title":"Accounting Part 3","description":"welcome","video_url":"uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941653ea5cf2_1765893438.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941653ea5cf2_1765893438.mp4 (type: file)
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":34,"video_id":34,"title":"Accounting Part 3","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941653ea5cf2_1765893438.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941653ea5cf2_1765893438.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 13:57:18","updated_at":"2025-12-16 13:57:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":35,"title":"Next Lesson 35"},"debug_info":{"lesson_id":34,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:38"}}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":36,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":36,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 36, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 36
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 36 in course: 17
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 36
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":36,"course_id":17,"teacher_id":14,"title":"computer","description":"welcoe","video_url":"uploads\/videos\/video_69416d7ec7d3c_1765895550.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416d7ec7d3c_1765895550.png","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:32:31","updated_at":"2025-12-16 14:32:31","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416d7ec7d3c_1765895550.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416d7ec7d3c_1765895550.mp4
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416d7ec7d3c_1765895550.mp4 (type: file)
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":36,"video_id":36,"title":"computer","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416d7ec7d3c_1765895550.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416d7ec7d3c_1765895550.png","description":"welcoe","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:32:31","updated_at":"2025-12-16 14:32:31","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":36,"video_id":36,"title":"computer","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416d7ec7d3c_1765895550.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416d7ec7d3c_1765895550.png","description":"welcoe","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:32:31","updated_at":"2025-12-16 14:32:31","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":36,"video_id":36,"title":"computer","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416d7ec7d3c_1765895550.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416d7ec7d3c_1765895550.png","description":"welcoe","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:32:31","updated_at":"2025-12-16 14:32:31","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:41 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":36,"video_id":36,"title":"computer","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416d7ec7d3c_1765895550.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416d7ec7d3c_1765895550.png","description":"welcoe","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:32:31","updated_at":"2025-12-16 14:32:31","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":37,"title":"Next Lesson 37"},"debug_info":{"lesson_id":36,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:41"}}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":38,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":38,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 38, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 38
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 38 in course: 17
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 38
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":38,"course_id":17,"teacher_id":14,"title":"wefr","description":"we","video_url":"uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416f770c5ba_1765896055.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416f770c5ba_1765896055.mp4
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416f770c5ba_1765896055.mp4 (type: file)
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":39,"title":"Next Lesson 39"},"debug_info":{"lesson_id":38,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:48"}}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:34:59 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:34:59"}}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:35:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:35:20"}}
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 17:42:04 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:42:05 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:42:05"}}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:46:36 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:46:36"}}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:50:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:50:51"}}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:53:59 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:53:59"}}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 17:59:31 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 17:59:31"}}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 40, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 40
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 40 in course: 17
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 40
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":40,"course_id":17,"teacher_id":14,"title":"thes","description":"welcome","video_url":"uploads\/videos\/video_69417402f058f_1765897218.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69417402f058f_1765897218.mp4 -> https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4 (type: file)
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:03:28 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":41,"title":"Next Lesson 41"},"debug_info":{"lesson_id":40,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:03:28"}}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:08:26 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:08:26"}}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":38,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":38,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 38, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 38
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 38 in course: 17
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 38
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":38,"course_id":17,"teacher_id":14,"title":"wefr","description":"we","video_url":"uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","duration":null,"price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69416f770c5ba_1765896055.mp4 -> https://panaditeacademy.com/uploads/videos/video_69416f770c5ba_1765896055.mp4
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69416f770c5ba_1765896055.mp4 (type: file)
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:12:56 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":38,"video_id":38,"title":"wefr","duration":"10:30","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69416f770c5ba_1765896055.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69416f770c5ba_1765896055.png","description":"we","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 14:40:55","updated_at":"2025-12-16 14:40:55","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":39,"title":"Next Lesson 39"},"debug_info":{"lesson_id":38,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:12:56"}}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:18:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:18:43"}}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 40, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 40
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 40 in course: 17
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 40
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":40,"course_id":17,"teacher_id":14,"title":"thes","description":"welcome","video_url":"uploads\/videos\/video_69417402f058f_1765897218.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69417402f058f_1765897218.mp4 -> https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4 (type: file)
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:34:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":41,"title":"Next Lesson 41"},"debug_info":{"lesson_id":40,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:34:38"}}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 40, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 40
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 40 in course: 17
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 40
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":40,"course_id":17,"teacher_id":14,"title":"thes","description":"welcome","video_url":"uploads\/videos\/video_69417402f058f_1765897218.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69417402f058f_1765897218.mp4 -> https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4 (type: file)
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:42:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":41,"title":"Next Lesson 41"},"debug_info":{"lesson_id":40,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:42:03"}}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 40, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 40
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 40 in course: 17
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 40
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":40,"course_id":17,"teacher_id":14,"title":"thes","description":"welcome","video_url":"uploads\/videos\/video_69417402f058f_1765897218.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69417402f058f_1765897218.mp4 -> https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4 (type: file)
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 18:45:27 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-16 15:00:18","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":41,"title":"Next Lesson 41"},"debug_info":{"lesson_id":40,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 18:45:27"}}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 19:13:09 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 19:13:09"}}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[16-Dec-2025 19:18:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-16 19:18:39"}}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 06:58:44 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 06:58:44"}}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 07:16:29 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 07:16:29"}}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 07:32:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 07:32:38"}}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 07:42:40 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 07:42:40"}}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 08:02:08 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 08:02:08"}}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":41,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 41, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 41
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 41 in course: 17
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 41
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":41,"course_id":17,"teacher_id":14,"title":"welcome","description":"wed","video_url":"uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","duration":"0:52","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_6941771ecab1d_1765898014.mp4 -> https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_6941771ecab1d_1765898014.mp4 (type: file)
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 08:09:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":41,"video_id":41,"title":"welcome","duration":"0:52","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_6941771ecab1d_1765898014.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_6941771ecab1d_1765898014.png","description":"wed","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:13:34","updated_at":"2025-12-16 15:13:34","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":42,"title":"Next Lesson 42"},"debug_info":{"lesson_id":41,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 08:09:20"}}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 09:46:06 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-17 09:46:06"}}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 44, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 44
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 44 in course: 18
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 44
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":44,"course_id":18,"teacher_id":14,"title":"Computer Science One Minute Major","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/tMXbl-BNqCU?si=zQTi1DoRhHq55WTY","platform":"youtube","embed_code":null,"video_id_external":"tMXbl-BNqCU","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","duration":"1:09","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/tMXbl-BNqCU (type: url)
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 10:03:15 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":45,"title":"Next Lesson 45"},"debug_info":{"lesson_id":44,"user_id":1,"course_id":18,"video_type":"url","timestamp":"2025-12-17 10:03:15"}}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":43,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":43,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 43, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 43
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 43 in course: 18
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 43
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":43,"course_id":18,"teacher_id":14,"title":"File video","description":"welcome","video_url":"uploads\/videos\/video_694270691a8be_1765961833.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694270691a8be_1765961833.mp4 -> https://panaditeacademy.com/uploads/videos/video_694270691a8be_1765961833.mp4
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694270691a8be_1765961833.mp4 (type: file)
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 10:10:19 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":44,"title":"Next Lesson 44"},"debug_info":{"lesson_id":43,"user_id":1,"course_id":18,"video_type":"file","timestamp":"2025-12-17 10:10:19"}}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 44, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 44
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 44 in course: 18
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 44
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":44,"course_id":18,"teacher_id":14,"title":"Computer Science One Minute Major","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/tMXbl-BNqCU?si=zQTi1DoRhHq55WTY","platform":"youtube","embed_code":null,"video_id_external":"tMXbl-BNqCU","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","duration":"1:09","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/tMXbl-BNqCU (type: url)
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 10:13:09 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":45,"title":"Next Lesson 45"},"debug_info":{"lesson_id":44,"user_id":1,"course_id":18,"video_type":"url","timestamp":"2025-12-17 10:13:09"}}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 44, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 44
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 44 in course: 18
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 44
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":44,"course_id":18,"teacher_id":14,"title":"Computer Science One Minute Major","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/tMXbl-BNqCU?si=zQTi1DoRhHq55WTY","platform":"youtube","embed_code":null,"video_id_external":"tMXbl-BNqCU","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","duration":"1:09","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/tMXbl-BNqCU (type: url)
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 10:39:45 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":45,"title":"Next Lesson 45"},"debug_info":{"lesson_id":44,"user_id":1,"course_id":18,"video_type":"url","timestamp":"2025-12-17 10:39:45"}}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":43,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":43,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 43, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 43
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 43 in course: 18
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 43
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":43,"course_id":18,"teacher_id":14,"title":"File video","description":"welcome","video_url":"uploads\/videos\/video_694270691a8be_1765961833.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694270691a8be_1765961833.mp4 -> https://panaditeacademy.com/uploads/videos/video_694270691a8be_1765961833.mp4
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694270691a8be_1765961833.mp4 (type: file)
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 10:40:53 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":43,"video_id":43,"title":"File video","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694270691a8be_1765961833.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694270691a8be_1765961833.jpeg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:57:13","updated_at":"2025-12-17 08:57:13","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":44,"title":"Next Lesson 44"},"debug_info":{"lesson_id":43,"user_id":1,"course_id":18,"video_type":"file","timestamp":"2025-12-17 10:40:53"}}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":44,"course_id":"cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09"}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 44, Encrypted Course ID: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09, User ID: 1
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: cTR5c2l6cGROaVQxdjlXUUpHdDB5dz09
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Decryption result: 18
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Using course_id: 18 for lesson: 44
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 44 in course: 18
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 44
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":44,"course_id":18,"teacher_id":14,"title":"Computer Science One Minute Major","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/tMXbl-BNqCU?si=zQTi1DoRhHq55WTY","platform":"youtube","embed_code":null,"video_id_external":"tMXbl-BNqCU","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","duration":"1:09","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/tMXbl-BNqCU (type: url)
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 11:03:19 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":44,"video_id":44,"title":"Computer Science One Minute Major","duration":"1:09","video_url":"https:\/\/www.youtube.com\/embed\/tMXbl-BNqCU","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/tMXbl-BNqCU\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-17 08:58:53","updated_at":"2025-12-17 08:58:53","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":45,"title":"Next Lesson 45"},"debug_info":{"lesson_id":44,"user_id":1,"course_id":18,"video_type":"url","timestamp":"2025-12-17 11:03:19"}}
[17-Dec-2025 11:59:27 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":2,"current_time":1,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:30 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":6,"current_time":4,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:30 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:30 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":10,"current_time":7,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:36 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":14,"current_time":9,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:36 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:36 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 11:59:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 11:59:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 11:59:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:01 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:01 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:01 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:08 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:08 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:08 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:10 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:10 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:10 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:13 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:13 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:13 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:16 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:16 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:16 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:20 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:20 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:20 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:25 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:25 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:25 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:31 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:31 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:31 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:33 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:33 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:43 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:43 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:43 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:46 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:46 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:46 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:00:54 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:00:54 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:00:54 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:01:18 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:01:18 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:01:18 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:01:58 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:01:58 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:01:58 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:00 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:00 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:00 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:03 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:03 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:03 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:07 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:07 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:07 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:09 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:09 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:09 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:12 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:12 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:12 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:15 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:15 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:15 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:19 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:19 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:19 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:21 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:22 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:22 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:24 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:24 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:24 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:28 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:28 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:28 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:32 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:32 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:32 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:33 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:34 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:34 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:37 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:37 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:37 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:39 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:39 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:39 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:42 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:42 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:42 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:45 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:45 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:45 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:48 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:48 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:48 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 12:02:51 Europe/Berlin] 🐛 VIDEO PROGRESS UPDATE - Received data: {"video_id":44,"lesson_id":44,"course_id":18,"progress_percentage":17,"current_time":11,"completed":0,"completed_raw":"0","student_id":45}
[17-Dec-2025 12:02:51 Europe/Berlin] 🎯 COURSE PROGRESS DEBUG - Total: 7, Completed: 0, Overall: 0%
[17-Dec-2025 12:02:51 Europe/Berlin] 🔍 COURSE PROGRESS CALCULATION: 0 completed videos ÷ 7 total lessons × 100 = 0%
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 16:16:59 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 16:17:00 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 16:17:00"}}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 16:18:05 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-17 16:18:05"}}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 16:18:15 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-17 16:18:15"}}
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 16:36:48 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 16:36:49 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 16:36:49"}}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 16:46:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-17 16:46:46"}}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:02:11 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-17 17:02:11"}}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:02:20 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 17:02:20"}}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:02:30 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-17 17:02:30"}}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:15:07 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 17:15:07"}}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:15:18 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 17:15:18"}}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[17-Dec-2025 17:18:33 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-17 17:18:33"}}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 09:50:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 09:50:46"}}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 12:57:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 12:57:39"}}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 12:58:45 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 12:58:45"}}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 13:08:14 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 13:08:14"}}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 13:08:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 13:08:48"}}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 13:52:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 13:52:03"}}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 14:03:49 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 14:03:49"}}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 15:39:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 15:39:51"}}
[18-Dec-2025 15:48:18 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 15:48:19 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 15:48:19"}}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 15:48:32 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 15:48:32"}}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 15:49:02 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 15:49:02"}}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 19:02:53 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 19:02:53"}}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 19:06:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 19:06:38"}}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 19:06:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 19:06:51"}}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 19:06:57 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 19:06:57"}}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 19:07:05 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 19:07:05"}}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:42:25 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:42:25"}}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:42:38 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:42:38"}}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:47:40 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:47:40"}}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:47:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:47:46"}}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:49:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:49:46"}}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:49:51 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:49:51"}}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:50:00 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:50:00"}}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:51:54 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:51:54"}}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:52:03 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:52:03"}}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:52:07 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:52:07"}}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:53:33 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:53:33"}}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:53:39 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-18 20:53:39"}}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":30,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 30, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 30
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 30 in course: 14
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 30
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":30,"course_id":14,"teacher_id":14,"title":"This is an update web development update","description":"Welcome to Web development","video_url":"uploads\/videos\/video_693d190b92e66.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","duration":"0:29","price":"0.00","views":31,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_693d190b92e66.mp4 -> https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_693d190b92e66.mp4 (type: file)
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[18-Dec-2025 20:53:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":30,"video_id":30,"title":"This is an update web development update","duration":"0:29","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_693d190b92e66.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_693d18d5375f8.png","description":"Welcome to Web development","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-12 16:22:45","updated_at":"2025-12-13 11:16:29","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":31,"title":"Next Lesson 31"},"debug_info":{"lesson_id":30,"user_id":1,"course_id":14,"video_type":"file","timestamp":"2025-12-18 20:53:43"}}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":42,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 42, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 42
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 42 in course: 17
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 42
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":42,"course_id":17,"teacher_id":14,"title":"bullet","description":"nice","video_url":"uploads\/videos\/video_694177737690f_1765898099.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","duration":"0:55","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_694177737690f_1765898099.mp4 -> https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_694177737690f_1765898099.mp4 (type: file)
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 05:30:46 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":42,"video_id":42,"title":"bullet","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_694177737690f_1765898099.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_694177737690f_1765898099.png","description":"nice","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:14:59","updated_at":"2025-12-16 15:14:59","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":43,"title":"Next Lesson 43"},"debug_info":{"lesson_id":42,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-19 05:30:46"}}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":40,"course_id":"TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09"}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 40, Encrypted Course ID: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09, User ID: 1
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: TkJFZVVpM0ExcXdLMVVZQ1JVRlYzUT09
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Decryption result: 17
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Using course_id: 17 for lesson: 40
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 40 in course: 17
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 40
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":40,"course_id":17,"teacher_id":14,"title":"thes","description":"welcome","video_url":"uploads\/videos\/video_69417402f058f_1765897218.mp4","video_type":"file","external_url":null,"platform":null,"embed_code":null,"video_id_external":null,"thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","duration":"0:55","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-18 09:58:45","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] File upload video converted: uploads/videos/video_69417402f058f_1765897218.mp4 -> https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Final video URL: https://panaditeacademy.com/uploads/videos/video_69417402f058f_1765897218.mp4 (type: file)
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-18 09:58:45","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-18 09:58:45","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-18 09:58:45","video_order":1,"is_published":true,"last_position":0,"video_type":"file"}
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 05:32:42 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":40,"video_id":40,"title":"thes","duration":"0:55","video_url":"https:\/\/panaditeacademy.com\/uploads\/videos\/video_69417402f058f_1765897218.mp4","video_path":"","thumbnail":"uploads\/thumbnails\/thumb_69417402f058f_1765897218.png","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-16 15:00:18","updated_at":"2025-12-18 09:58:45","video_order":1,"is_published":true,"last_position":0,"video_type":"file"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":41,"title":"Next Lesson 41"},"debug_info":{"lesson_id":40,"user_id":1,"course_id":17,"video_type":"file","timestamp":"2025-12-19 05:32:42"}}
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[19-Dec-2025 07:39:47 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 07:39:48 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-19 07:39:48"}}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":31,"course_id":"akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09"}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 31, Encrypted Course ID: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09, User ID: 1
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: akJKZEZteGNEVmFNSnZNcFdhV1g3Zz09
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Decryption result: 14
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Using course_id: 14 for lesson: 31
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 31 in course: 14
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 31
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":31,"course_id":14,"teacher_id":14,"title":"TrackDuck web feedback tool explained in 1min","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/dZREfVaIkl8?si=0MgwgzZQjAchKcRx","platform":"youtube","embed_code":"<iframe width=\"100%\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8?rel=0&showinfo=0&modestbranding=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>","video_id_external":"dZREfVaIkl8","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","duration":"0:57","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/dZREfVaIkl8 (type: url)
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 07:39:59 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":31,"video_id":31,"title":"TrackDuck web feedback tool explained in 1min","duration":"0:57","video_url":"https:\/\/www.youtube.com\/embed\/dZREfVaIkl8","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/MyCvTSjkD74\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-13 11:22:26","updated_at":"2025-12-13 13:07:41","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":32,"title":"Next Lesson 32"},"debug_info":{"lesson_id":31,"user_id":1,"course_id":14,"video_type":"url","timestamp":"2025-12-19 07:39:59"}}
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":45,"course_id":"KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09"}
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":45,"course_id":"KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09"}
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 45, Encrypted Course ID: KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09, User ID: 1
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Decryption result: 19
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Using course_id: 19 for lesson: 45
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 45 in course: 19
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 45
[19-Dec-2025 10:13:10 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":45,"course_id":19,"teacher_id":14,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DlJ1Hol0-nw?si=AW37J4rbfV_F32go","platform":"youtube","embed_code":"<iframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw\" frameborder=\"0\" allowfullscreen><\/iframe>","video_id_external":"DlJ1Hol0-nw","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","duration":"0:44","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DlJ1Hol0-nw (type: url)
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 10:13:11 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":46,"title":"Next Lesson 46"},"debug_info":{"lesson_id":45,"user_id":1,"course_id":19,"video_type":"url","timestamp":"2025-12-19 10:13:11"}}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":45,"course_id":"KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09"}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":45,"course_id":"KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09"}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 45, Encrypted Course ID: KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09, User ID: 1
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: KzUvYVNwS3NVaktmNW5RYnJsVkxyZz09
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Decryption result: 19
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Using course_id: 19 for lesson: 45
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 45 in course: 19
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 45
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":45,"course_id":19,"teacher_id":14,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DlJ1Hol0-nw?si=AW37J4rbfV_F32go","platform":"youtube","embed_code":"<iframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw\" frameborder=\"0\" allowfullscreen><\/iframe>","video_id_external":"DlJ1Hol0-nw","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","duration":"0:44","price":"0.00","views":1,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DlJ1Hol0-nw (type: url)
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[19-Dec-2025 10:17:28 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":45,"video_id":45,"title":"Welcome to Computer Literacy | Getting to know the BASICS of COMPUTERS","duration":"0:44","video_url":"https:\/\/www.youtube.com\/embed\/DlJ1Hol0-nw","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DlJ1Hol0-nw\/maxresdefault.jpg","description":"What Computer Literacy Includes\r\n\r\nBasic Computer Skills\r\n\r\nTurning a computer on\/off\r\n\r\nUsing keyboard, mouse, and touchpad\r\n\r\nManaging files and folders\r\n\r\nOperating Systems\r\n\r\nNavigating Windows\/macOS\/Linux\r\n\r\nInstalling and updating software\r\n\r\nBasic troubleshooting\r\n\r\nOffice & Productivity Tools\r\n\r\nWord processing (e.g., MS Word)\r\n\r\nSpreadsheets (e.g., Excel)\r\n\r\nPresentations (e.g., PowerPoint)\r\n\r\nInternet & Email Use\r\n\r\nWeb browsing and search skills\r\n\r\nCreating and managing email\r\n\r\nOnline communication etiquette\r\n\r\nDigital Safety & Ethics\r\n\r\nPassword security\r\n\r\nIdentifying scams and fake news\r\n\r\nResponsible online behavior\r\n\r\nBasic Hardware Knowledge\r\n\r\nUnderstanding parts (CPU, RAM, storage)\r\n\r\nConnecting peripherals (printer, scanner)\r\n\r\nIntro to Online Services\r\n\r\nCloud storage\r\n\r\nVideo conferencing\r\n\r\nOnline forms and portals","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-19 08:27:31","updated_at":"2025-12-19 08:29:15","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":46,"title":"Next Lesson 46"},"debug_info":{"lesson_id":45,"user_id":1,"course_id":19,"video_type":"url","timestamp":"2025-12-19 10:17:28"}}
[21-Dec-2025 11:00:57 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 11:00:58 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 11:00:58"}}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 11:11:45 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 11:11:45"}}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 11:28:47 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 11:28:47"}}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 11:41:43 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 11:41:43"}}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 11:42:31 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 11:42:31"}}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 13:09:45 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 13:09:45"}}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] AJAX endpoint called
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Included config and encryption system
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Raw input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Parsed input: {"lesson_id":47,"course_id":"Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09"}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Received: Lesson ID: 47, Encrypted Course ID: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09, User ID: 1
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Attempting to decrypt: Yit3alk4aXBvYy9RcHNHaHIrWGJJZz09
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Function exists? YES
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Decryption result: 20
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Using course_id: 20 for lesson: 47
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Looking for lesson: 47 in course: 20
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Querying database for real lesson data: lesson_id = 47
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Database connected successfully
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] FOUND real video data: {"video_id":47,"course_id":20,"teacher_id":14,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","description":"welcome","video_url":null,"video_type":"url","external_url":"https:\/\/youtu.be\/DgGvpcO_Ng0?si=3Mzs3YzsRzBY1-Zg","platform":"youtube","embed_code":null,"video_id_external":"DgGvpcO_Ng0","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","duration":"0:42","price":"0.00","views":0,"likes":0,"category_name":null,"is_free":0,"is_published":1,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","has_assignment":0,"has_quiz":0,"video_order":1,"prerequisite_video_id":null,"linked_content_types":null}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Final video URL: https://www.youtube.com/embed/DgGvpcO_Ng0 (type: url)
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Created lesson data from real video: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Final lesson data: {"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"}
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] Preparing JSON response
[21-Dec-2025 13:17:17 Europe/Berlin] [AJAX DEBUG] JSON response sent: {"success":true,"message":"Lesson loaded successfully via AJAX","lesson":{"lesson_id":47,"video_id":47,"title":"Add Bootstrap 5 To Rails 7 In 1 Minute","duration":"0:42","video_url":"https:\/\/www.youtube.com\/embed\/DgGvpcO_Ng0","video_path":"","thumbnail":"https:\/\/img.youtube.com\/vi\/DgGvpcO_Ng0\/maxresdefault.jpg","description":"welcome","completed":false,"has_assignment":false,"has_quiz":false,"has_materials":false,"watch_progress":0,"created_at":"2025-12-21 09:59:58","updated_at":"2025-12-21 09:59:58","video_order":1,"is_published":true,"last_position":0,"video_type":"url"},"course_progress":{"total_lessons":7,"completed_lessons":3,"progress_percentage":43},"next_lesson":{"lesson_id":48,"title":"Next Lesson 48"},"debug_info":{"lesson_id":47,"user_id":1,"course_id":20,"video_type":"url","timestamp":"2025-12-21 13:17:17"}}
